Cod sursa(job #1147523)

Utilizator toncuvasileToncu Vasile toncuvasile Data 19 martie 2014 21:47:09
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
//Infoarena. Arhiva Educationala. Radix Sort.
#include<iostream>
#include<fstream>
#include<queue>
using namespace std;

int main(){
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);

    int N,A,B,C,*v;
    cin>>N>>A>>B>>C;
    v=new int[N+3];
    v[1]=B;
    for(int i=2;i<=N;i++){
        v[i]=(A*v[i-1]+B)%C;
    }

    queue<int>Q[10];
    for(int p=1;p<=1000000000;p=p*10){
        for(int i=1;i<=N;i++){
            Q[(v[i]/p)%10].push(v[i]);
        }
        int x=1;
        for(int k=0;k<10;k++){
            while( !Q[k].empty() ){
                v[x++]=Q[k].front();
                Q[k].pop();
            }
        }
    }

    for(int i=1;i<=N;i+=10) cout<<v[i]<<" ";


}