#include <bits/stdc++.h>
using namespace std;
const int N=1000005;
const int M=25;
int n,m,c;
int num[N];
int st1[N][M];
int st2[N][M];
inline void pre(){
for (int j=1;j<=M;j++)
for (int i=1;i+(1<<j)-1<=n;i++)
st1[i][j]=max(st1[i][j-1],st1[i+(1<<j-1)][j-1]),
st2[i][j]=min(st2[i][j-1],st2[i+(1<<j-1)][j-1]);
}
int lg[N];
inline int query_ans(int l,int r){
int mx,mn;
int d=lg[r-l+1];
mx=max(st1[l][d],st1[r-(1<<d)+1][d]);
mn=min(st2[l][d],st2[r-(1<<d)+1][d]);
return mx-mn;
}
int main(){
scanf("%d%d%d",&n,&m,&c);
for (int i=1;i<=n;i++)
scanf("%d",&num[i]);
lg[0]=-1;
for (int i=1;i<=n;i++)lg[i]=lg[i>>1]+1,st1[i][0]=st2[i][0]=num[i];
pre();
for (int i=1;i<=n-m+1;i++){
int l=i,r=i+m-1;
if (query_ans(l,r)<=c)
printf("%d\n",i);
}
}
标准st板子 8AC 1MLE 1WA