#include #include #include "vector" struct Pair { int first; int second; friend bool operator<(const Pair &a, const Pair &b) { return a.first < b.first; } }; int main() { int n, q; std::cin >> n >> q; std::vector data{}; std::vector pairs; for(int i = 0; i < n; ++i) { int x; std::cin >> x; data.push_back(x); } // Precompute for(int i = 0; i < n - 1;++i){ int begin = i; while(data[i] <= data[i+1] && i < n -1){ ++i; } pairs.push_back(Pair{.first = begin, .second = i}); } if (n == 1) { pairs.push_back(Pair {0, 0}); } //queries for (int i = 0; i < q; i++) { int l, r; std::cin >> l >> r; --l; --r; auto low = std::lower_bound(pairs.begin(), pairs.end(), Pair{.first = l, .second = 0}); if(low->first != l){ --low; } Pair p = *low; if(p.second >= r){ std::cout << "YES" << std::endl; } else{ std::cout << "NO" << std::endl; } } return 0; }