题意:
给n个数, 选m个数,这m个数的最大最小差值小于等于5。
输入最大的m值。
思路:
排序+二分,枚举每个数二分求出最大值
#include<iostream>
typedef long long ll;
const int inf=0x3f3f3f3f;
const int inn=0x80808080;
using namespace std;
int main(){
const int maxm=2e5+5;
int n;
cin>>n;
int a[maxm];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
int ans=0;
for(int i=0;i<n;i++){
int temp=upper_bound(a,a+n,a[i]+5)-a-1;
temp=temp-i+1;
if(temp>ans){
ans=temp;
}
}
cout<<ans<<endl;
return 0;
}