Cod sursa(job #2073366)

Utilizator anca.sotirAnca Sotir anca.sotir Data 22 noiembrie 2017 23:54:39
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#define Nmax 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long long int N,v[Nmax],pozitii[10],w[Nmax];
int main()
{
    f>>N;
    for(long long int i=1; i<=N; ++i)
    {
        f>>v[i];
        ++pozitii[v[i]%10];
    }
    for(long long int i=1; i<=9; ++i)
        pozitii[i]+=pozitii[i-1];
    for(long long int p=1; pozitii[0]<N; p*=10)
    {
        for(long long int i=N; i>=1; --i)
            w[pozitii[(v[i]/p)%10]--]=v[i];
        for(int i=0; i<=9; ++i)
            pozitii[i]=0;
        p*=10;
        for(long long int i=1; i<=N; ++i)
        {
            v[i]=w[i];
            ++pozitii[(v[i]/p)%10];
        }
        for(int i=1;i<=9;++i)
            pozitii[i]+=pozitii[i-1];
        p/=10;
    }
    for(long long int i=1; i<=N; ++i)
        g<<v[i]<<' ';
    return 0;
}