Cod sursa(job #1149139)

Utilizator c0rn1Goran Cornel c0rn1 Data 21 martie 2014 14:59:22
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
#include <vector>

using namespace std;

vector <int> v;
int N, A, B, C;

void cit()
{
    scanf("%d %d %d %d", &N, &A, &B, &C);
    v.push_back(B);
    for (int i=2; i<=N; i++)
        v.push_back((1ll*A*v.back()+B)%C);
}

void sol(int i)
{
    vector <int> a[256];
    for (int j=0; j<N; j++)
        a[255&(v[j]>>i*8)].push_back(v[j]);
    v.clear();
    for (int j=0; j<256; j++)
    {
        for(int k=0; k<a[j].size(); k++)
            v.push_back(a[j][k]);
        a[j].clear();
    }
}

void afis()
{
    for (int i=0; i< v.size(); i+=10)
        printf("%d ", v[i]);
}

int main()
{
    freopen("radixsort.in", "r", stdin);
    freopen("radixsort.out", "w", stdout);
    cit();
    for (int i=0; i<4; i++)
        sol(i);
    afis();
    return 0;
}