Cod sursa(job #1104259)

Utilizator mircea.dobreanuMircea Dobreanu mircea.dobreanu Data 10 februarie 2014 17:18:42
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=10000005;
const int MAXEL=(1<<30)+5;
int n,a,b,c,k;
int v[MAXN],u[MAXEL];
void read()
{
    int i;
    freopen("radixsort.in","r",stdin);
    scanf("%d%d%d%d",&n,&a,&b,&c);
    v[1]=b;
    for (i=2; i<=n; ++i)
        v[i]=(a*v[i-1]+b)%c;
}
void write()
{
    int i;
    freopen("radixsort.out","w",stdout);
    for (i=1; i<=n; i+=10)
        printf("%d ",v[i]);
    printf("\n");
}
void counting_sort()
{
    int i,j,poz=1;
    for (i=1; i<=n; ++i)
        ++u[v[i]];

    for (i=1; i<MAXEL && poz<=n; ++i)
    {
        if (u[i])
        {
            for (j=1; j<=u[i]; ++j)
            {
                v[poz++]=i;
            }
        }
    }
}
int main()
{
    read();
    counting_sort();
    write();
    return 0;
}