这位同志,你这个优化了也是错的。。。TLE变成WA。直接给你写一个对的吧!
```c
#include<bits/stdc++.h>
using namespace std;
int min(int a,int b){return a<b?a:b;}
int n,k,b,vis[200000],sum[200000],ans=1e5;//ans随便给一个大数就行
signed main(void){//这个写int main()就行,本人爱玩花里胡哨的
cin>>n>>k>>b;
for(register int i=1;i<=b;i++){//同样,register可以不写
int x;
cin>>x;
vis[x]=1;
}
for(register int i=1;i<=n;i++)
sum[i]+=sum[i-1]+vis[i];
for(register int i=1;i<=n-k+1;i++)
ans=min(ans,sum[i+k-1]-sum[i-1]);
cout<<ans;
}
```
懂了???记得给个关注啊。
by PassName @ 2021-12-16 21:58:54
@[make123](/user/574850)
也直接给一个吧```
```
#include<bits/stdc++.h>
using namespace std;
int _n=0,_m=0,_k=0,_ans=2147483647;
int _a[1000000];
int main(){
cin>>_n>>_k>>_m;
for(int i=0,x=0;i<_m;i++,_a[x]=1)
cin>>x;
for(int i=1,x=count(_a+1,_a+_k+1,1);i<=_n-_k+1;i+=x-_ans+1,x=count(_a+i,_a+_k+i,1))
_ans=min(x,_ans);
cout<<_ans;
}
by Nagligivaget @ 2022-04-10 20:01:35
@[单南松](/user/524911) 关注
by hwnsuqhs @ 2023-05-03 11:44:25