Cod sursa(job #726368)

Utilizator BlueStrutAndrei Prahoveanu BlueStrut Data 27 martie 2012 10:34:51
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<cstdio>
using namespace std;
int i, z, n, a[100001], b[100001], v[10];
bool ok;
int main(){
    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;
        }
        for (i=1;i<=9;i++) v[i]+=v[i-1];
        for (i=1;i<=n;i++) {
            b[v[a[i]/z%10-1]+1]=a[i];
            v[a[i]/z%10-1]++;
        }
        for (i=1;i<=n;i++) a[i]=b[i];
        z=z*10;
    }
    for (i=1;i<=n;i++)
        printf("%d ", a[i]);
    return 0;
}