Cod sursa(job #3258345)

Utilizator cioc.mateiCioc Matei cioc.matei Data 22 noiembrie 2024 10:14:58
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int sir[10000000][2];
int main()
{
    int n, a, b, c, maxim=0, i, pow2=1, j, sor, care=1;
    fin>>n>>a>>b>>c;
    sir[0][0]=b;
    for(i=1;i<n;i++){
        sir[i][0]=(a*sir[i-1][0]+b)%c;
        //cout<<sir[i][0]<<" ";
    }
    for(i=1;i<n;i++){
        if (sir[i][0]>maxim)maxim=sir[i][0];
    }
    while((1<<pow2)<maxim){
        pow2++;
    }
    for(i=0;i<=pow2;i++){
        sor=0;
        care=(care+1)%2;
        for(j=0; j<n; j++){
            if((sir[j][care]&(1<<i))==0){
                sir[sor][(care+1)%2]=sir[j][care];
                sor++;
                //cout<<sor<<" ";
            }
        }
        for(j=0; j<n; j++){
            if((sir[j][care]&(1<<i))>0){
                sir[sor][(care+1)%2]=sir[j][care];
                sor++;
                //cout<<sor<<" ";
            }
        }
        for(j=0; j<n; j++){
            //cout<<(sir[j][(care+1)%2]&(1<<i))/(1<<i);
        }
        //cout<<endl;
    }
    for(i=0;i<n;i+=10){
        fout<<sir[i][care%2]<<" ";
    }
    return 0;
}