#include #define MAX_N 1000000 int freqs[MAX_N]; #define DIV 1000 char isSatisfactory[MAX_N / DIV]; int check(int i, int j) { for (; i freqs[i+1]) return 0; } return 1; } void print(int c) { printf("%s\n", (c)? "YES":"NO"); } int main(){ int n, q; scanf("%d %d", &n, &q); int i; for(i = 0; i < n; i++){ scanf("%d", freqs + i); } for (i=0; DIV*i= n)? n-1 : DIV * (i+1); isSatisfactory[i] = check(DIV * i, end); } for(i = 0; i < q; i++){ int l, r; scanf("%d %d", &l, &r); l--, r--; if (l / DIV == r / DIV || r / DIV == l / DIV + 1) { print(check(l, r)); } else { if (!check(l, DIV * (l/DIV) + DIV)) print(0); else { if (!check(DIV * (r/DIV) - 1, r)) print(0); else { int j, out = 1; for (j= l/DIV + 1; j < r/DIV; j++) { if (!isSatisfactory[j]) { out = 0; break; } if (!check(j*DIV - 1, j*DIV)) { out = 0; break; } } print(out); } } } } return 0; }