Cod sursa(job #809493)

Utilizator luca.boieruBoieru Luca luca.boieru Data 8 noiembrie 2012 16:32:54
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <cstdio>
using namespace std;

int fr[20], a[500004], b[500005];

int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    int n; cin >> n;

    for(int i = 1; i <= n; ++ i){
        cin >> a[i];
    }

    for(int exp = 1, power = 1; exp < 12; ++ exp, power *= 10){
        for(int j = 0;  j <= 10; ++ j) fr[j] = 0;
        for(int i = 1; i <= n; ++ i){
            int cif = (a[i] / power) % 10;
            ++ fr[cif + 1];
        }
        for(int i = 1; i <= 10; ++ i){
            fr[i] += fr[i - 1];
        }
        for(int i = 1; i <= n; ++ i){
            int cif = (a[i] / power) % 10;
            ++ fr[cif];
            b[fr[cif]] = a[i];
        }
        for(int i = 1; i <= n; ++ i){
            a[i] = b[i];
        }

    }

    for(int i = 1; i <= n; ++ i){
        cout << a[i] << " ";
    }

    return 0;
}