用的ST表
感觉while那一段不太对劲
#include<bits/stdc++.h>
using namespace std;
int s[100010],d[100010],f[100010];
int st[100010][22];
int ST(int l,int r) {
int k=log2(r-l+1);
if(f[st[l][k]]<=f[st[r-(1<<k)+1][k]])
return st[l][k];
else
return st[r-(1<<k)+1][k];
}
int main() {
int n,b;
cin>>n>>b;
for(int i=1; i<=n; i++) {
cin>>f[i];
st[i][0]=i;
}
for(int i=1; i<=22; i++) {
for(int j=1; j+(1<<i)-1<=n; j++) {
if(f[st[j][i-1]]<=f[st[j+(1<<(i-1))][i-1]])
st[j][i]=st[j][i-1];
else
st[j][i]=st[j+(1<<(i-1))][i-1];
}
}
for(int i=1; i<=b; i++) {
cin>>s[i]>>d[i];
int l=1;
while(l+d[i]<n) {
if(f[ST(l+1,l+d[i])]<=s[i]) {
l=ST(l+1,l+d[i]);
}
else break;
}
if(l+d[i]>=n)cout<<1<<"\n";
else cout<<0<<"\n";
}
return 0;
}