Cod sursa(job #1447636)

Utilizator dan.ghitaDan Ghita dan.ghita Data 4 iunie 2015 21:34:34
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("radixsort.in");
ofstream g ("radixsort.out");
int n, m, v[10000005], a[10000005];
long long c=1;
int fr[20];
 
void radix()
{
    for(int i=1;i<=n;++i)
    m=max(m, v[i]);
    while(m/c>0){
    for(int i=0;i<16;++i)
        fr[i]=0;
    for(int i=1;i<=n;++i)
        fr[(v[i]/c)&15]++;
    for(int i=1;i<16;++i)
        fr[i]=fr[i]+fr[i-1];
    for(int i=n;i>0;--i)
    {
        a[fr[(v[i]/c)&15]]=v[i];
        fr[(v[i]/c)&15]--;
    }
    for(int i=1;i<=n;++i)
        v[i]=a[i];
    c=c<<4;
    }
 
 
}
 
int main()
{
   int a, b, c;
   f>>n>>a>>b>>c;
   int i;
   v[1] = b;
   for (i=2;i<=n;++i) 
      v[i] = (a * v[i-1] + b) % c;
   radix();
   for(i = 1; i <= n; i += 10)
    g<<v[i]<<" ";
   g.close();
   return 0;
}