这段代码为什么会CE?
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int a[N],n,m,h;
struct node{
int maxn=INT_MIN,minn=INT_MAX;
}c[N];
int f(int k){
return k&-k;
}
void update(int idx,int x){
for(int i=idx;i<=n;i+=f(i)){
c[i].maxn=max(c[i].maxn,x);
c[i].minn=min(c[i].minn,x);
}
}
bool check(int begin,int end){
int x=INT_MIN,y=INT_MAX;
while(begin<=end){
for(;end>begin;end-=f(end)){
x=max(x,c[end].maxn);
y=min(y,c[end].minn);
}
x=max(x,a[end]);
y=min(y,a[end]);
end--;
}
return abs(x-y)<=h;
}
int main(){
cin>>n>>m>>h;
for(int i=1;i<=n;i++){
cin>>a[i];
update(i,a[i]);
}
bool flag=0;
for(int i=1;i<=n-m+1;i++){
if(check(i,i+m-1)){
cout<<i<<endl;
flag=1;
}
}
if(!flag) cout<<"NONE";
return 0;
}
报错信息是
Nothing is compiled: OUTPUT exceeds.
求助!