Cod sursa(job #2758391)

Utilizator xXoctavianXxStanescu Matei Octavian xXoctavianXx Data 10 iunie 2021 09:30:26
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#define ll long long

using namespace std;

ifstream fin("radixsort.in");
ofstream fout("radixsort.out");

int v[10000005];
int n,a,b,c,maxim;
const int baza=10;
vector<int> bucket[baza+1];

void radix_sort()
{
	ll put=1;
	while(put<=maxim)
	{
		//impartire in bucketuri
		for(int i=1; i<=n; i++)
		{
			bucket[(v[i]/put)%baza].push_back(v[i]);
		}
		int nr=0;
		for(int i=0; i<baza; i++)
		{
			for(int j=0; j<bucket[i].size(); j++)
			{
				v[++nr]=bucket[i][j];
			}
			bucket[i].clear();
		}
		put*=baza;
	}
}

int main(int argc, char *argv[]) 
{
	fin>>n>>a>>b>>c;
	v[1]=b;
	maxim=b;
	for(int i=2; i<=n; i++)
	{
		v[i]=(a*v[i-1]+b)%c;
		maxim=max(maxim,v[i]);
	}
	radix_sort();
	//sort(v+1,v+n+1);
	for(int i=1; i<=n; i+=10)
	{
		fout<<v[i]<<" ";
	}
}