首先这题数据范围bt到107,所以很容易光读入就TLE,
scanf("%d",&x);
是不行的。必须快读。参考代码:
void read(int &x){
int f=1;x=0;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
x*=f;
}
其次要用桶排序,快排O(nlog2n)根本过不了,桶排序O(n)就行了。参考代码:
for(int i=0;i<n;i++)
{
read(x);
f[x]++;
}
for(int i=1;i<=100000;i++)
{
for(int j=0;j<f[i];j++)
{
s1.push(i);
}
}