Cod sursa(job #3200052)

Utilizator CastielGurita Adrian Castiel Data 3 februarie 2024 13:08:00
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream  fin("radixsort.in");
ofstream fout("radixsort.out");
vector<int> vec[949999];
const int MOD=950000;
int v[10000001],n,vmax,p,A,B,C,c,i,cc,k,j;
int main()
{
    fin>>n>>A>>B>>C;
    v[1]=B;
    for(i=2;i<=n;i++)
    {
        v[i]=((long long)A*v[i-1]+B)%C;
        vmax=max(vmax,v[i]);
    }
    c=0;
    while(vmax>0)
    {
        c++;
        vmax=vmax/MOD;
    }
    p=1;
    for(cc=1;cc<=c;cc++)
    {
        for(i=1;i<=n;i++)
        {
            vec[v[i]/p%MOD].push_back(v[i]);
        }
        k=0;
        for(i=0;i<=MOD-1;i++)
        {
            for(j=0;j<vec[i].size();j++)
            {
                k++;
                v[k]=vec[i][j];
            }
            vec[i].clear();
        }
        p=p*MOD;
    }
    for(i=1;i<=n;i=i+10)
    {
        fout<<v[i]<<" ";
    }
    fin.close();
    fout.close();
    return 0;
}