Cod sursa(job #726630)

Utilizator BlueStrutAndrei Prahoveanu BlueStrut Data 27 martie 2012 13:00:20
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<cstdio>
using namespace std;
int i, z, n, a[500010], b[500010], v[12];
bool ok;
int main(){ //algsort
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d", &n); z=1;
    for (i=1;i<=n;i++) scanf("%d", &a[i]); ok=true;
    while (ok==true) { ok=false;
        for (i=0;i<=9;i++) v[i]=0;
        for (i=1;i<=n;i++) {v[a[i]/z%10]++; if (i/z%10!=0) ok=true;
        } if (ok==false) break;
        for (i=1;i<=9;i++) v[i]+=v[i-1];
        for (i=1;i<=n;i++) {
            b[++v[a[i]/z%10-1]]=a[i];
        }
        for (i=1;i<=n;i++) a[i]=b[i];
        z=z*10;
        if (v[0]==n) ok=false;
    }
    for (i=1;i<=n;i++) printf("%d ", a[i]);
    printf("\n");
    return 0;
}