Pagini recente » Benzina | Monitorul de evaluare | apm | Energii | Cod sursa (job #1034732)
#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, b[nmax];
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 )
{
int bucket[10] = {0};
for ( int i=0; i<N; ++i )
bucket[(v[i]/exp)%10]++;
for ( int i=1; i<=9; ++i )
bucket[i] += bucket[i-1];
for ( int i=N-1; i>=0; --i )
b[ --bucket[(v[i]/exp)%10] ] = v[i];
for ( int i=0; i<N; ++i )
v[i] = b[i];
exp *= 10;
}
for ( int i=0; i<N; ++i )
out << v[i] << " ";
}