#include #include #include #include std::vector> seq; std::vector query; void precalculate() { int curr_l = 0; for (int i = 1; i < query.size(); i++) { if (query[i] < query[i-1]) { seq.push_back({curr_l, i-1}); curr_l = i; } } seq.push_back({curr_l, query.size()-1}); } bool comp(const std::pair a, int val) { return a.first < val; } int main() { int n, q; std::cin >> n >> q; query.resize(n); for (int i = 0; i < n; i++) { int x; std::cin >> x; query[i] = x; } precalculate(); for (int a = 0; a < q; a++) { int l, r; std::cin >> l >> r; auto found_pair = std::lower_bound(seq.begin(), seq.end()-1, l-1, comp); bool flag = true; flag = ((l-1 >= found_pair->first) && (r-1 <= found_pair->second)) || (l-1 == r-1); if (flag) { std::cout << "YES" << std::endl; } else { std::cout << "NO" << std::endl; } } }