Cod sursa(job #2195626)

Utilizator AlexandruabcdeDobleaga Alexandru Alexandruabcde Data 16 aprilie 2018 21:21:26
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f ("radixsort.in");
ofstream g ("radixsort.out");
int n,A,B,C,v[10000002],Max;
void CitiresiCreareVector ()
{
    f >> n >> A >> B >> C;
    v[1] = B;
    for (int i = 2; i <= n; i++)
    {
        v[i] = ((1LL * A * v[i-1]) % C + B) % C;
        if (v[i] > Max) Max = v[i];
    }
}

void RadixSort ()
{
    int p = 1;
    queue <int> C[10];
    while (p <= Max)
    {
        for (int i = 1; i <= n; i++)
        {
            C[v[i]/p%10].push(v[i]);
        }
        int j = 0,i = 0;
        while (j <= 9)
        {
            while (!C[j].empty())
            {
                i ++;
                v[i] = C[j].front();
                C[j].pop();
            }
            j ++;
        }
        p = p * 10;
    }
    for (int i = 1; i <= n; i += 10)
    {
        g << v[i] << " ";
    }
}
int main()
{
    CitiresiCreareVector();
    RadixSort();
    return 0;
}