Cod sursa(job #2898561)

Utilizator disinfoion ion disinfo Data 7 mai 2022 09:12:52
Problema Radix Sort Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <deque>
#include <vector>

using namespace std;

int bucket[256];
unsigned long long n, 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;
	int i, val;

  	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] << " ";	
}