Cod sursa(job #1856624)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 25 ianuarie 2017 10:10:15
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <fstream>
#define nmax 500005
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[nmax],k[nmax],p[256];
int n,a,b,c;
int base;
long long basemax;
// baza 256
inline int cif(int r)
{
    return ((r>>(8*base))&255);
}

int main()
{
    int i,j;
    f>>n;
    for (i=1;i<=n;i++)
        f>>v[i];
    basemax=4;
    base=0;
    while (base<basemax) {

        for (i=0;i<=255;i++)
            p[i]=0;

        for (i=1;i<=n;i++)
            p[cif(v[i])]++;

        for (i=1;i<=255;i++)
            p[i]+=p[i-1];

        for (i=n;i>=1;i--)
            k[p[cif(v[i])]--]=v[i];

        for (i=1;i<=n;i++)
            v[i]=k[i];

        base++;
    }

    for (i=1;i<=n;i++)
        g<<v[i]<<' ';

    return 0;
}