P4447我的代码是这样的
#include<bits/stdc++.h>
using namespace std;
int n,a[100005],num[100005],cnt[100005],p=0,minl=100000000,len;
int check(){
for(int i=1;i<=p;i++){
if(cnt[i] != 0) return i;
}
return -1;
}
int main(){
memset(num,100000005,sizeof(num));
memset(cnt,0,sizeof(cnt));
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
if(n==0){
cout<<'0';
return 0;
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
if(a[i] == num[p]){
cnt[p]++;
} else {
p++;
num[p]=a[i];
cnt[p]++;
}
}
int start=check();
while(start != -1){
len=1;
for(int i=start+1;i<=p;i++){
if(cnt[i] != 0 && cnt[i] >= cnt[i-1] && num[i] == num[i-1]+1){
len++;
} else {
if(len < minl) minl=len;
break;
}
}
for(int i=start;i<start+len;i++) cnt[i]--;
start=check();
}
cout<<minl;
return 0;
}
本蒟蒻向各位大佬们求助,这道题我错哪了?