#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
const int maxn=1e6+5;
int n,m,c,Max[maxn<<2],Min[maxn<<2],a[maxn];
inline void pushup(int id)
{
Max[id]=max(Max[id<<1],Max[id<<1|1]);
Min[id]=min(Min[id<<1],Min[id<<1|1]);
}
inline void build(int id,int l,int r)
{
if(l==r)
{
Max[id]=Min[id]=a[l];
return;
}
int mid=(l+r)>>1;
build(id<<1,l,mid);
build(id<<1,mid+1,r);
pushup(id);
}
inline int query1(int id,int l,int r,int x,int y)
{
if(x<=l&&r<=y)
{
return Max[id];
}
int mid=(l+r)>>1,ans=-0x7fffffff;
if(x<=mid)
{
ans=max(ans,query1(id<<1,l,mid,x,y));
}
if(y>mid)
{
ans=max(ans,query1(id<<1|1,mid+1,r,x,y));
}
return ans;
}
inline int query2(int id,int l,int r,int x,int y)
{
if(x<=l&&r<=y)
{
return Min[id];
}
int mid=(l+r)>>1,ans=0x7fffffff;
if(x<=mid)
{
ans=min(ans,query2(id<<1,l,mid,x,y));
}
if(y>mid)
{
ans=min(ans,query2(id<<1|1,mid+1,r,x,y));
}
return ans;
}
int main()
{
n=read();
m=read();
c=read();
bool flag=0;
for(int i=1;i<=n;++i)
{
a[i]=read();
}
build(1,1,n);
for(int i=1;i<=n;++i)
{
int Maxx=query1(1,1,n,i,i+m-1),Minx=query2(1,1,n,i,i+m-1);
if(Maxx-Minx<=c)
{
printf("%d",i);
puts("");
flag=1;
}
}
if(!flag)
{
cout<<"NONE\n";
}
}
因为我不知道我哪里错了所以我让你们帮助我找一下我的代码哪里错了