Cod sursa(job #1552249)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 17 decembrie 2015 16:36:23
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

int v[10000005];
vector < int > q[10];

int main()
{
    int i,n,A,B,C,mm,c,cnt,m;
    freopen("radixsort.in", "r", stdin);
    freopen("radixsort.out", "w", stdout);
    scanf("%d %d %d %d",&n,&A,&B,&C);
    v[1] = B%C;
    for(i = 2;i <= n;i++){
        v[i] = (1LL*A*v[i-1]+B)%C;
    }
    m = 10;
    mm = 1;
    while(m <= 1e9){
        for(i = 1;i <= n;i++){
            c = (v[i]%m)/mm;
            q[c].push_back(v[i]);
        }
        cnt = 1;
        for(i = 0;i <= 9;i++){
            for(auto it : q[i]){
                v[cnt] = it;
                cnt++;
            }
            q[i].clear();
        }
        m *= 10;
        mm *= 10;
    }
    for(i = 1;i <= n;i += 10){
        printf("%d ",v[i]);
    }
    return 0;
}