Cod sursa(job #1693331)

Utilizator harababurelPuscas Sergiu harababurel Data 22 aprilie 2016 21:20:03
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;

const int nmax = 100000000;
vector <int> w[10];

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

    int *v = new int[nmax];
    int n, a, b, c;

    f>>n>>a>>b>>c;

    v[0] = b;
    for(int i=1; i<n; i++)
        v[i] = (a * v[i-1] + b) % c;


    for(int k=10; k<=1000000000; k*=10) {
        for(int i=0; i<n; i++)
            w[(v[i]%k) / (k/10)].push_back(v[i]);

        int i=0;
        for(int digit=0; digit<10; digit++) {
            for(auto x:w[digit])
                v[i++] = x;
            w[digit].clear();
        }
    }

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

    return 0;
}