Cod sursa(job #1115864)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 22 februarie 2014 09:57:26
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>

using namespace std;

int n,a,b,c,i,v[10000005],Max,p,k,nn,vv[10000005],fr[12];

int main() {
	ifstream f("radixsort.in");
	ofstream g("radixsort.out");
	
	f>>n>>a>>b>>c;
	
	v[1]=b;
	Max=b;
	for(i=2;i<=n;i++){
		v[i]=int((long long)(a*v[i-1]+b)%c);
		if(Max<v[i])
			Max=v[i];
	}
	
	while(Max) {
		nn++;
		Max/=10;
	}
	p=1;
	for(k=1;k<=nn;k++) {
		p*=10;
		for(i=0;i<=9;i++) 
			fr[i]=0;
		for(i=n;i>=1;i--)
			fr[(v[i]%p)/(p/10)]++;
		for(i=1;i<=9;i++)
			fr[i]+=fr[i-1];
		for(i=n;i>=1;i--){
			vv[fr[(v[i]%p)/(p/10)]]=v[i];
			fr[(v[i]%p)/(p/10)]--;
		}
		for(i=1;i<=n;i++)
			v[i]=vv[i];
	}
	
	for(i=1;i<=n;i+=10)
		g<<v[i]<<' ';



	return 0;
}