Cod sursa(job #330751)

Utilizator freak93Adrian Budau freak93 Data 11 iulie 2009 14:36:38
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<cstring>
#define maxn 500005

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int a[maxn],b[maxn],n,i;

void rad(int *a,int *b,int n,int byte)
{
    int i,count[1024],ind[1024];
    memset(count,0,sizeof(count));
    for(i=1;i<=n;++i)
        ++count[(a[i]>>byte)&1023];
    ind[0]=1;
    for(i=1;i<1024;++i)
        ind[i]=ind[i-1]+count[i-1];
    for(i=1;i<=n;++i)
        b[ind[(a[i]>>byte)&1023]++]=a[i];
}

void radix(int *a,int n)
{
    rad(a,b,n,0);
    rad(b,a,n,10);
    rad(a,b,n,20);
}

int main()
{
    f>>n;
    for(i=1;i<=n;++i)
        f>>a[i];
    radix(a,n);
    for(i=1;i<=n;++i)
        g<<a[i]<<" ";
    g<<"\n";
    f.close();
    g.close();
    return 0;
}