Cod sursa(job #2356314)

Utilizator AlexandruabcdeDobleaga Alexandru Alexandruabcde Data 26 februarie 2019 16:53:20
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream f ("radixsort.in");
ofstream g ("radixsort.out");

int n, a, b, c, Max;

long long p;

int v[10 000 005];

vector <int> H[10005];

int main()
{
    f >> n >> a >> b >> c;

    v[1] = b;
    Max = v[1];

    for (int i = 2; i <= n; ++i)
    {
        v[i] = (a * v[i-1] + b) % c;
        Max = max(Max, v[i]);
    }

    p = 1;

    while (p < Max)
    {
        long long ms = 0;
        for (int i = 1; i <= n; ++i)
        {
            H[v[i] / p % 10000].push_back(v[i]);
            ms = max(ms, v[i] / p % 10000);
        }

        int vf = 0;

        for (int i = 0; i <= ms; ++i)
        {
            while (!H[i].empty())
            {
                v[++vf] = H[i].back();
                H[i].pop_back();
            }
        }

        p = p * 10000;
    }

    for (int i = 1; i <= n; i += 10)
        g << v[i] << " ";
    return 0;
}