#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; if(i == n - 1) break; } pairs.push_back(Pair{.first = begin, .second = i}); } //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; Pair p = pairs[0]; for (size_t j = 0; j < pairs.size(); j++) { if (j == pairs.size() - 1) { p = pairs[j]; } else if (pairs[j + 1].first > l) { p = pairs[j]; break; } } if(p.second >= r){ std::cout << "YES" << std::endl; } else{ std::cout << "NO" << std::endl; } } return 0; }