P是端点,牛在区域中啊。。。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1005;
int pt[N],s[N];
int n,p,c;
int slove(int st){
int ans=0;
int l=st,r=p-1,m;
while(l<=r){
m=(l+r)/2;
if(s[m]-s[st-1]<=c){
ans=(m-st+1);
l=m+1;
}
else r=m-1;
}
return ans;
}
int main(){
int tmp;
while(scanf("%d%d%d",&n,&p,&c)!=EOF){
memset(pt,0,sizeof(pt));
for(int i=1;i<=n;i++){
scanf("%d",&tmp);
pt[tmp]++;
}
s[0]=0;
for(int i=1;i<p;i++){
s[i]=s[i-1]+pt[i];
}
int ans=0;
for(int i=1;i<p;i++){
ans=max(ans,slove(i));
}
printf("%d\n",ans);
}
return 0;
}