Cod sursa(job #3291676)

Utilizator Radu_BicliBiclineru Radu Radu_Bicli Data 5 aprilie 2025 11:43:06
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda cex_9 Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n, i, a, b, c;
vector<int> v[2];
deque<int> bk[12];

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

    v[1].push_back(b);
    for(i = 2; i <= n; i++) v[1].push_back((1LL * a * v[1].back() % c + b) % c);

    int put = 1;
    int ma = *max_element(v[1].begin(), v[1].end());

    int idx = 1;
    while(put <= ma) {
        int iCur = idx % 2;
        int iUrm = (idx + 1) % 2;

        for(int cur : v[iCur]) {
            bk[cur / put % 10].push_back(cur);
        }

        v[iUrm].clear();
        for(i = 0; i <= 9; i++) {
            while(!bk[i].empty()) {
                v[iUrm].push_back(bk[i].front());
                bk[i].pop_front();
            }
        }

        idx++;
        put *= 10;
    }

    idx %= 2;
    for(int i = 0; i < v[idx].size(); i += 10) fout << v[idx][i] << " ";

    return 0;
}