Cod sursa(job #2268548)

Utilizator marian013Giugioiu Marian Constantin marian013 Data 24 octombrie 2018 22:36:45
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n, v[10000002], r[10][10000002], sf[10];
void radixsort(int lv){
    int c, k=0, i, j;
    for(i = 0; i < n; i++){
        c=v[i] / lv % 10;
        r[c][++sf[c]] = v[i];
    }
    if(sf[0] == n)
        for(j=1;j<=sf[0];j++)
            v[k++]=r[0][j];
    else{
        for(i=0;i<=9;i++){
            for(j=1;j<=sf[i];j++)
                v[k++]=r[i][j];
            sf[i]=0;
        }
        radixsort(lv * 10);
    }
}
int main()
{
    int a, b, c, i;
    f>>n>>a>>b>>c;
    v[0] = b % c;
    for(i = 1; i < n; i++)
        v[i] = (1ll * a * v[i-1] % c + b) % c;
    radixsort(1);
    for(i = 0; i < n; i += 10)
        g<<v[i]<<" ";
}