Cod sursa(job #1668333)

Utilizator zertixMaradin Octavian zertix Data 29 martie 2016 18:57:03
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

int v[10000005],n,a,b,c;
vector <int > mat[256];


void creare()
{
    scanf("%d%d%d%d",&n,&a,&b,&c);
    v[1]=b;
    for (int i=2;i<=n;++i)
        v[i]=(1LL*a*v[i-1]+b)%c;
}
void sortare(int indice1,int indice2)
{
    for (int i=0;i<256;++i)
        mat[i].clear();
    for (int i=1;i<=n;++i)
        {
            int poz=v[i]<<indice2;
            poz>>=indice1;
            poz>>=indice2;
            mat[poz].push_back(v[i]);
        }
    int k=0;
    for (int i=0;i<=255;++i)
        for (vector <int > :: iterator it=mat[i].begin();it!=mat[i].end();++it)
            v[++k]=*it;
}
int main()
{
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);
    creare();
    for (int j=0;j<=24;j++)
        sortare(j,24-j);
    for (int i=1;i<=n;i+=10)
        printf("%d ",v[i]);
    return 0;
}