我的代码思路和题解几乎一样,但提交到USACO网站上过不了,洛谷也过不了(最后一个点超时)。后来我试了洛谷上几篇题解的代码提交到USACO网站,都一样超时。(提交到洛谷我不敢,我怕被棕)
附代码:
#include<bits/stdc++.h>
using namespace std;
int a[120000],n;
int minans()
{
if(a[n-2]-a[0]==n-2&&a[n-1]-a[n-2]>2)
{
return 2;
}
if(a[n-1]-a[1]==n-2&&a[1]-a[0]>2)
{
return 2;
}
int tmp=0;
for(int i=0;i<n;++i)
{
if(i%100==0)
cerr<<i<<endl;
int j=0;
while(j<n-1&&a[j+1]-a[i]<=n-1)
++j;
tmp=max(tmp,j-i+1);
}
return n-tmp;
}
int maxans()
{
return max(a[n-2]-a[0],a[n-1]-a[1])-n+2;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;++i)
scanf("%d",&a[i]);
sort(a,a+n);
printf("%d\n%d",minans(),maxans());
}