Cod sursa(job #117069)

Utilizator DjSefuWrong name DjSefu Data 20 decembrie 2007 16:25:54
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#include <string>
#include <ctime>
#include <cstdlib>
#define maxn 1000001

int a[maxn], b[maxn];

inline void rad(int n, int byte, int a[], int b[])
{
        int count[1024], index[1024];
        int i;

        memset(count, 0, sizeof(count));
        index[0]=1;
        for(i=1;i<=n;++i) ++count[(a[i]>>byte)&1023];
        for(i=1;i<1024;++i) index[i]=index[i-1]+count[i-1];
        for(i=1;i<=n;++i) b[index[(a[i]>>byte)&1023]++]=a[i];
}

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

int main()
{

        double s=clock();
        freopen("radix.in","r",stdin);
        int n;
        scanf("%d\n", &n);
        for(int i=1;i<=n;++i) scanf("%d ", a+i);
        radix(a, n);

       // for(int i=1;i<=n;++i) printf("%d ", a[i]);
       // printf("\n");

       printf("%lf\n", (clock()-s)/(double)CLOCKS_PER_SEC);

	scanf("%d", &n);       
        return 0;
}