Cod sursa(job #1315943)

Utilizator diana-t95FMI Tudoreanu Diana Elena diana-t95 Data 13 ianuarie 2015 12:57:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include<fstream>
using namespace std;
ofstream g("algsort.out");
#define maxn 500001
#define mod 4
#define maxp 31
int v[maxn], frecv[1<<mod];
int nr[maxn], n, sign=0;
void radixsort()
{
    long long int p, cv, i;
    //for (i=1;i<=n;i++) v[i]=i;
    for (p=0;p<=maxp;p+=mod)
    {
        for (i=1;i<=n;i++)
            frecv[(nr[i]/(1<<p))%(1<<mod)]++;
        for (i=1;i<(1<<mod);i++)
            frecv[i]+=frecv[i-1];
        for (i=n;i>=1;i--)
        {
            cv=frecv[(nr[i]/(1<<p))%(1<<mod)]--;
            //frecv[(nr[v[sign][i]]/(1<<p))%(1<<mod)]+1;
            v[cv]=nr[i];
        }
        for (i=0;i<(1<<mod);i++) frecv[i]=0;
        for (i=1;i<=n;i++) nr[i]=v[i];
    }
}
int main()
{
    ifstream f("algsort.in");
    int i;
    f>>n;
    for (i=1;i<=n;i++) f>>nr[i];
    radixsort();
    for (i=1;i<=n;i++)
        g<<nr[i]<<' ';
    g<<'\n';
}