Cod sursa(job #1600551)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 15 februarie 2016 09:49:32
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("radixsort.in");
ofstream fout("radixsort.out");

const int NMax = 1e7 + 5;

int n;
int v[NMax], A[10][NMax];

inline void Radix(const int &a){
    int b = 1, c, k = 0;
    for(int i = 1; i <= a; i++) b *= 10;
    for(int i = 0; i < 10; i++) A[i][0] = 0;
    for(int i = 1; i <= n; i++){
        c = (v[i] / b) % 10;
        A[c][0]++;
        A[c][A[c][0]] = v[i];
    }
    for(int i = 0; i < 10; i++){
        for(int j = 1; j <= A[i][0]; j++){
            v[++k] = A[i][j];
        }
    }
}

int main(){
    int a, b, c;
    fin >> n >> a >> b >> c;
    v[1] = b;
    for(int i = 2; i <= n; i++){
        v[i] = (1LL * a * v[i - 1] + b) % c;
    }
    for(int i = 0; i < 9; i++){
        Radix(i);
    }
    for(int i = 1; i <= n; i += 10){
        fout << v[i] << " ";
    }
    return 0;
}