WA on #1 #2 80pts
查看原帖
WA on #1 #2 80pts
1103464
ming2023楼主2024/1/18 18:51

如题 求组hack

#include<bits/stdc++.h>
using namespace std;

const int N=1e5+50;
const int inf= (1<<31)-1;

int storing[N];//存储

int main()
{
	int n;cin>>n;
	for (int i=1;i<=n;++i) cin>>storing[i];
	sort(storing+1,storing+1+n);

	int comboNow,minCombo=inf;
	
	int l=1,r=1,now=1;//从左到右跑一遍贪心
	int inGroupMin=storing[1],inGroupMax=storing[1];//区间内两端点 用来确定新的数能不能入队
	while(now<=n)
	{
		if (now>=n)//特判只有一个组的情况
		{
			comboNow=r-l+1;
			if (comboNow<minCombo) minCombo=comboNow;
		}
		
		if (storing[now+1]<=inGroupMax+1 && storing[now+1]>=inGroupMin-1)
		{
			if (storing[now+1]==inGroupMax+1) inGroupMax++;
			if (storing[now+1]==inGroupMin-1) inGroupMin--;
			now++;
			r++;
		}
		else
		{
			comboNow=r-l+1;
			//cout<<comboNow<<' ';
			if (comboNow<minCombo) minCombo=comboNow;
			
			r++;
			now=r;
			l=r;
			inGroupMin=storing[l];
			inGroupMax=storing[l];
		}
	}
	cout<<minCombo;
	return 0;
}
2024/1/18 18:51
加载中...