11点hack数据原先代码是能通的,但是把bug修好之后hack就tle了 以及,我在做贪心算法的题单前没看贪心算法概念,所以这个可能不是贪心算法的解 改之前3×114514是100010,2233×33是100010和200020
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,lst[3*114514]={0},save[2233*33]={0},ans=114514*114,sav2=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>lst[i];
}
sort(lst,lst+n);
int now=lst[0],sav=0;
for(int i=0;i<n;i++){
if(lst[i]==now){
save[sav]+=1;
}
else if(lst[i]==now+1){
now+=1;sav+=1;save[sav]+=1;n+=1;
}
else{
sav+=2;now=lst[i];save[sav]+=1;
}
}
now=0;int inn=0;
//for(int i=0;i<sav;i++){
//cout<<save[i]<<' ';
//}
for(int i=0;i<sav;i++){
if(save[i]!=0){
now+=1;save[i]-=1;
}
else if(save[i]==0){
i++;ans=min(ans,now);now=0;continue;
}
if(save[i]!=0&&inn==0){
sav2=i;
inn=1;
}
if(save[i]>=save[i+1]){
ans=min(ans,now);
if(inn==1){
i=sav2-1;
}else
i++;
now=0;inn=0;
}
}
cout<<ans;
}