Cod sursa(job #3229638)

Utilizator Razvan23Razvan Mosanu Razvan23 Data 16 mai 2024 21:54:24
Problema Radix Sort Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;

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

int n, a[10000005];
int A, B, C;

void countSort(int n, long long exp)
{
    int output[n+5];
    int i, c[130] = { 0 };
    for (i = 1; i <= n; i++)
        c[(a[i] / exp) % 128]++;
    for (i = 1; i < 128; i++)
        c[i] += c[i - 1];
    for (i = n; i >= 1; i--)
    {
        output[c[(a[i] / exp) % 128]] = a[i];
        c[(a[i] / exp) % 128]--;
    }
    for (i = 1; i <= n; i++)
        a[i] = output[i];
}


int main()
{
    ios_base::sync_with_stdio(0);
    fin.tie(0);
    fout.tie(0);
    int i, maxi;
    long long j;
    fin >> n >> A >> B >> C;
    maxi = a[1] = B;
    for(i=2; i<=n; i++)
    {
        a[i] = (1LL * A * a[i-1] + B) % C;
        maxi = max(maxi, a[i]);
    }
    for(j=1; maxi > j; j *= 128)
        countSort(n, j);
    for(i=1; i<=n; i+=10)
        fout << a[i] << " ";
    return 0;
}