Cod sursa(job #1547343)

Utilizator peevMicu filip-mihai peev Data 9 decembrie 2015 13:00:19
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;

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

#define COUNT_N 256
#define BYTE 8
#define N_MAX 1000000

int a[N_MAX],b[N_MAX],count[COUNT_N],ind[COUNT_N];

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

void radix(int *a,int n)
{
    rad(a,b,0 ,n);
    rad(b,a, BYTE,n);
    rad(a,b,2*BYTE,n);
    rad(b,a,3*BYTE,n);
}


int main()
{
    int n,a,b,c,v[100],i;
    f>>n>>a>>b>>c;
    for(i=1;i<=n;i++)
    {
        if(i==1)
            v[i]=b;
            else
            v[i]=(a*v[i-1]+b)%c;
    }
    radix(v,n);
    for(i=1;i<=n;i=i+10)
        g<<v[i]<<" ";
}