Cod sursa(job #1471202)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 august 2015 14:09:05
Problema Radix Sort Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.64 kb
#include<stdio.h>
#include<stdlib.h>
int n,v[10000001],i,*t,r,a,b,c;
void C(int u[],int w[],int b) {
    int c[256]={0},x[256],i;
    for(i=0;i<n;i++)
        c[(u[i]>>(b*8))&(0xFF)]++;
    for(x[0]=0,i=1;i<256;i++)
        x[i]=x[i-1]+c[i-1];
    for(i=0;i<n;i++)
        w[x[(u[i]>>(b*8))&(0xFF)]++]=u[i];
}
int main() {
    freopen("radixsort.in","r",stdin),
    freopen("radixsort.out","w",stdout),
	scanf("%d%d%d%d",&n,&a,&b,&c),v[0]=b%c,t=(int*)malloc(n*sizeof(int)),r=sizeof(v[0]);
	for(i=1;i<n;i++)
		v[i]=(1LL*a*v[i-1]%c+b)%c;
    for(i=0;i<r;i++)
    	C(i&1?t:v,i&1?v:t,i);
	for(i=0;i<n;i+=10)
		printf("%d ",v[i]);
}