Pagini recente » Cod sursa (job #2160351) | Cod sursa (job #2968701) | Cod sursa (job #2613271) | Cod sursa (job #3330557) | Cod sursa (job #2083322)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500040], n;
int c[10][50040], fr[10], re[10];
void citire()
{
int i;
f>>n;
for(i=1;i<=n;++i)
f>>v[i];
f.close();
}
void afisare()
{
int i;
for(i=1;i<=n;++i)
g<<v[i]<<" ";
g<<endl;
g.close();
}
void ins (int cif, int x)
{
c[cif][fr[cif]]=x;
fr[cif]++;
}
void coada (int p)
{
int i, j, k;
for(i=1;i<=n;i++)
ins(v[i]%p, v[i]);
k=1;
for(i=0;i<=9;++i)
for(j=re[i];j<fr[i];++j)
v[k]=c[i][j], ++k, ++re[i];
}
void radix ()
{
int i, mx=0, cif=1, p=10;
for(i=1;i<=n;i++)
if(v[i]>mx) mx=v[i];
while(p/10<mx)
{
coada(p);
p*=10;
}
}
int main()
{
citire();
radix();
afisare();
}