
问:为什么我的代码在DEV-C++里没错,交上洛谷就出错了?哪里CE了?
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,m,k,cnt;
int a[N],t[N];
struct node{
int maxn=INT_MIN;
int minn=INT_MAX;
}c[N];
int lowbit(int k){
return k&-k;
}
void add(int i,int x){
while(i<=n){
i+=lowbit(i);
c[i].maxn+=max(c[i].maxn,x);
c[i].minn+=min(c[i].minn,x);
}
}
int sum(int l,int r){
int mx=INT_MIN,mn=INT_MAX;
while(l<=r){
while(r-lowbit(r)>=l){
r-=lowbit(r);
mx=max(c[r].maxn,mx);
mn=min(c[r].minn,mn);
}
mx=max(mx,a[r]);
mn=min(mn,a[r]);
r--;
}
if(abs(mx-mn)<=k) return 1;
else return 0;
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
add(i,a[i]);
}
for(int i=1;i<=n-m+1;i++){
if(sum(i,i+m-1)){
t[++cnt]=i;
}
}
for(int i=1;i<=cnt;i++){
cout<<t[i]<<endl;
}
if(cnt==0) {
cout<<"NONE";
return 0;
}
return 0;
}