Pagini recente » Cod sursa (job #832781) | Cod sursa (job #3142533) | Cod sursa (job #688576) | Cod sursa (job #62118) | Cod sursa (job #443304)
Cod sursa(job #443304)
#include <cstdio>
#include <algorithm>
using namespace std;
//<parsing>
FILE* fin=fopen("algsort.in","r");
const unsigned maxb=8192;
char buf[maxb];
unsigned ptr=0;
inline unsigned getInt(){
unsigned nr=0;
while(buf[ptr]<'0'||'9'<buf[ptr])
if(++ptr>=maxb)
fread(buf,maxb,1,fin),ptr=0;
while('0'<=buf[ptr]&&buf[ptr]<='9'){
nr=nr*10+buf[ptr]-'0';
if(++ptr>=maxb)
fread(buf,maxb,1,fin),ptr=0;
}
return nr;
}
//</parsing>
FILE* fout=fopen("algsort.out","w");
#define MAXN 500005
#define BASE 1000
#define max(a,b) (((a)>(b))?(a):(b))
int n,vec[MAXN],b[MAXN],maxv=-1,exp=1;
bool comp(int a,int b){
return (a/exp%BASE)<(b/exp%BASE);
}
void radixSort(){
while(maxv/exp>0){
sort(vec,vec+n,comp);
exp*=BASE;
}
}
int main(){
n=getInt();
for(int i=0;i<n;i++){
vec[i]=getInt();
maxv=max(vec[i],maxv);
}
radixSort();
for(int i=0;i<n;i++){
fprintf(fout,"%d ",vec[i]);
}
fclose(fin);
fclose(fout);
return 0;
}