Pagini recente » Cod sursa (job #856645) | Cod sursa (job #1306544) | Cod sursa (job #1276487) | Cod sursa (job #1057580) | Cod sursa (job #1024419)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
int n, mx, m, c=1;
int v[500001], a[500001], fr[10];
void count()
{
int a[500001];
for(int i=0;i<10;++i)
fr[i]=0;
for(int i=1;i<=n;++i)
fr[(v[i]/c)%10]++;
for(int i=1;i<10;++i)
fr[i]=fr[i]+fr[i-1];
for(int i=n;i>0;--i)
{
a[fr[(v[i]/c)%10]]=v[i];
fr[(v[i]/c)%10]--;
}
for(int i=1;i<=n;++i)
v[i]=a[i];
}
void radix()
{
for (int i=1;i<=n;++i)
m=max(m, v[i]);
while(m/c){
for(int i=0;i<10;++i)
fr[i]=0;
for(int i=1;i<=n;++i)
fr[(v[i]/c)%10]++;
for(int i=1;i<10;++i)
fr[i]=fr[i]+fr[i-1];
for(int i=n;i>0;--i)
{
a[fr[(v[i]/c)%10]]=v[i];
fr[(v[i]/c)%10]--;
}
for(int i=1;i<=n;++i)
v[i]=a[i];
c*=10;
}
}
int main()
{
f>>n;
int i;
for (i=1;i<=n;++i) f>>v[i];
radix();
for(i=1;i<=n;++i)
g<<v[i]<<" ", cout<<v[i]<<" ";
g.close();
return 0;
}