Cod sursa(job #1702244)

Utilizator refugiatBoni Daniel Stefan refugiat Data 14 mai 2016 20:22:34
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <list>
using namespace std;
ifstream si("radixsort.in");
ofstream so("radixsort.out");
const int NMAX=10000005;
int v[260];
int pst[260];
long long x[NMAX];
long long rez[NMAX];
inline int grupa(int i,int octdeja)
{
    return (x[i]>>(1<<(8*octdeja)))&255;
}
void radixsort(int octdeja,int n)
{
    int i;
    for(i=0;i<n;++i)
    {
        v[grupa(i,octdeja)]++;
    }
    int st=0;
    for(i=0;i<256;++i)
    {
        pst[i]=st;
        st+=v[i];
        v[i]=0;
    }
    for(i=0;i<n;++i)
    {
        rez[pst[grupa(i,octdeja)]]=x[i];
        ++pst[grupa(i,octdeja)];
    }
    for(i=0;i<n;++i)
    {
        x[i]=rez[i];
    }
}
int main()
{
    int n,k,m,p;
    si>>n>>k>>m>>p;

    k%=p;
    m%=p;
    x[0]=m;
    int i;
    for(i=1;i<=n;++i)
    {
        x[i]=((x[i-1]*k)%p+m)%p;

    }
    for(i=0;i<8;++i)
    {
        radixsort(i,n);
    }
    for(i=0;i<n;i+=10)
        so<<x[i]<<' ';

    return 0;
}