Cod sursa(job #2268544)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 24 octombrie 2018 22:25:52
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
int N;
unsigned long long A,B,C,P=1;
vector<unsigned long long> V;
queue<unsigned long long> Q[100];
int main(){
    cin>>N>>A>>B>>C;
    V.reserve(N+5);
    V[1]=B;
    for(int i=2;i<=N;++i)
        V[i]=(A*V[i-1]+B)%C;
    for(int i=1;i<=6;++i,P*=100){
        for(int j=1;j<=N;j++)
            Q[V[j]/P%100].push(V[j]);
        for(int k=0,j=0;j<100;j++)
            while(!Q[j].empty()){
                V[++k]=Q[j].front();
                Q[j].pop();
            }
    }
    for(int i=1;i<=N;i+=10)
        cout<<V[i]<<' ';
}