Cod sursa(job #1128452)

Utilizator sebinechitasebi nechita sebinechita Data 27 februarie 2014 17:09:14
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
#define MAX 10000100

int a[MAX], sir[MAX], fr[256];

int main()
{
    int n, A, B, C, i, j;
    fin>>n>>A>>B>>C;
    a[1]=B;
    for(i=2;i<=n;i++)
    {
        a[i]=(1LL*a[i-1]*A+1LL*B)%C;
    }
    for(j=0;j<4;j++)
    {


        for(i=1;i<=n;i++)
        {
            fr[(a[i]>>(j<<3))&255]++;
        }
        for(i=1;i<=255;i++)
        {
            fr[i]+=fr[i-1];
        }
        for(i=1;i<=n;i++)
        {
            sir[fr[(a[i]>>(j<<3))&255]--]=a[i];
        }
        memcpy(a, sir, sizeof(a));
        memset(fr, 0, sizeof(fr));
    }
    reverse(a+1, a+n+1);
    for(i=1;i<=n;i+=10)
    {
        fout<<a[i]<<" ";
    }

}