Cod sursa(job #1021469)

Utilizator andreeaghetuUNIBUC andreeaghetu andreeaghetu Data 3 noiembrie 2013 20:58:20
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("algsort.in");
ofstream out ("algsort.out");
int N, a[500005];

void sort()
{
    int b[500005], m=a[0], exp=1;
    for (int i=1;i<N;++i)
    {
        if (a[i]>m)
        m=a[i];
    }

    while (m/exp>0)
    {
        int bucket[10]={0}, cifra;

        for (int i=0;i<N;++i)
        {
            cifra=(a[i]/exp)%10;
            bucket[cifra]++;
        }

        for (int i=1;i<10;++i)
            bucket[i]=bucket[i]+bucket[i-1];

        for (int i=N-1;i>=0;--i)
        {
            cifra=(a[i]/exp)%10;
            b[bucket[cifra]-1]=a[i];
            bucket[cifra]--;
        }

        for (int i=0;i<N;++i)
            a[i]=b[i];
        exp=exp*10;

  }
}


int main()
{

    in>>N;
    for (int i=0;i<N;++i)
        in>>a[i];
    sort();
    for (int i=0;i<N;++i)
        out<<a[i]<<" ";

    return 0;
}