CF386B
看题解里没有二分做法就上传了。
题目大意
给出一个序列和两个数
做法
考虑二分,先排序一遍,然后二分求得第一个大于
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
long long n,a[105],t,maxn;
int main(){
cin>>n;
for(int i=1;i<=n;++i)
cin>>a[i];
cin>>t;
sort(a+1,a+n+1);
for(int i=1;i<=n;++i){
//用STL就可以,减一再加一就等于没变所以可以去掉
maxn=max(maxn,(long long)(upper_bound(a+1,a+n+1,a[i]+t)-lower_bound(a+1,a+n+1,a[i])));
}
cout<<maxn;
return 0;
}
复杂度: