11点数据23ms过,5-10点开O2WA,不开RE
查看原帖
11点数据23ms过,5-10点开O2WA,不开RE
1098818
pbjyeee楼主2024/5/5 22:17

求助,洛谷测试点数据不给下,我数组大小应该也是够得,但RE提示说数组超界

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int n,lst[114514]={0},save[233666]={0},ans=114514,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;
}
2024/5/5 22:17
加载中...