Cod sursa(job #3198493)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 29 ianuarie 2024 17:17:11
Problema Radix Sort Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#define baza 100
using namespace std;
ifstream  fin("radixsort.in");
ofstream fout("radixsort.out");
long long A,B,C;
int a[2][10000002],n,ok,r,nr[baza],poz[baza],vmax,k;
long long p,q;
int main()
{
    fin>>n>>A>>B>>C;
    a[0][1]=B;
    vmax=B;
    nr[B%baza]++;
    for(int i=2;i<=n;i++){
        a[0][i]=(A * a[0][i-1] + B) % C;
        vmax=max(vmax,a[0][i]);
        nr[a[0][i]%baza]++;
    }
    p=1;
    for(k=1;p<=vmax;k=1-k){
        poz[0]=0;
        for(int i=1;i<=baza-1;i++){
            poz[i]=poz[i-1]+nr[i-1];
        }
        for(int i=0;i<=baza-1;i++){
            nr[i]=0;
        }
        q=p*baza;
        for(int i=1;i<=n;i++){
            int z=a[1-k][i];
            int x=z/p%baza;
            a[k][poz[x]+1]=z;
            poz[x]++;
            nr[z/q%baza]++;
        }
        p=q;
    }
    for(int i=1;i<=n;i=i+10){
        fout<<a[1-k][i]<<" ";
    }
    return 0;
}