Pagini recente » Istoria paginii utilizator/petrusserban | Cod sursa (job #2682783) | Profil Al3ks1002 | baga_tare_lucaciu | Cod sursa (job #1034734)
#include <iostream>
#define nmax 500005
#include <queue>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int N, v[nmax], M, exp=1, k=0;
queue<int> q[10];
int main()
{
in >> N;
for ( int i = 0; i<N; ++i )
in >> v[i];
M = v[0];
for ( int i=1; i<N; ++i )
if ( v[i] > M ) M = v[i];
while ( M / exp > 0 )
{
k = 0;
for ( int i=0; i<N; ++i )
q[ (v[i] / exp) % 10 ].push(v[i]);
for ( int i=0; i<=9; ++i )
while ( !q[i].empty() )
{
v[k++] = q[i].front();
q[i].pop();
}
exp *= 10;
}
for ( int i=0; i<N; ++i )
out << v[i] << " ";
}