调了3个小时了,救救我
#include<bits/stdc++.h>
using namespace std;
int a[100050],hx[15][100005],cnt[15];
int maxn=-2e9;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
maxn=max(maxn,a[i]);
}
int base=1;
while(base<=maxn){
memset(hx,-1,sizeof(n));
for(int i=0;i<=9;i++){
cnt[i]=n;
}
for(int i=1;i<=n;i++){
hx[a[i]/base%10][cnt[a[i]/base%10]]=a[i];//装桶
cnt[a[i]/base%10]--;
}
int cou=1;
for(int i=0;i<=9;i++){
for(int j=n,k=cou;j>=cnt[i]+1,k<=n;j--,k++){
if(hx[i][j]==-1) continue;
a[k]=hx[i][j];//重新排列
cou++;
}
}
base*=10;
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}