Cod sursa(job #1149130)

Utilizator c0rn1Goran Cornel c0rn1 Data 21 martie 2014 14:50:04
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <stdio.h>
#include <iostream>
#include <vector>

using namespace std;

vector <int> v;
vector <int> a[256];
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((A * v.back() + B) % C);
}

void sol()
{
    for (int i=0; i<4; i++)
    {
        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();
    sol();
    afis();
    return 0;
}