Cod sursa(job #2918693)

Utilizator alt_contStefan alt_cont Data 12 august 2022 17:18:14
Problema Radix Sort Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <deque>
#include <vector>
 
using namespace std;
 
int bucket[256];
int n;
unsigned long long a, b, c;
ifstream fin;
ofstream fout;
int v[10000010];
int temp[10000010];
 
void rsort(int v_in[], int v_out[], int n, int byte, int initial=0){
	int count[256];
	int index[256];
	int i;
 
	for(i = 0; i < 256; ++i){
		count[i] = 0;
	}
 
	if(initial)
		v_in[0] = b;
	for(i = 0; i < n; ++i){
		count[(v_in[i]>>(8*byte))&0x000000ff]++;
		if(initial)
			v_in[i+1] = (a * v_in[i] + b) % c;
	}
 
	index[0] = 0;
	for(i = 1; i < 256; ++i){
		index[i] = index[i - 1] + count[i - 1];
	}
 
	for(i = 0; i < n; ++i){
		v_out[index[(v_in[i]>>(8*byte))&0x000000ff]++] = v_in[i];
 
	}
 
}
 
 
int main(){
	fin.open("radixsort.in");
	fout.open("radixsort.out");
	fin >> n >> a >> b >> c;
 
  	rsort(v, temp, n, 0, 1);
  	rsort(temp, v, n, 1);
  	rsort(v, temp, n, 2);
  	rsort(temp, v, n, 3);
 
	for(int i=0; i<n; i = i + 10)
		fout << v[i] << " ";	
}