如题 求组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;
}