Cod sursa(job #2489163)

Utilizator drknss_Hehe hehe drknss_ Data 7 noiembrie 2019 22:52:02
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define all(a) (a).begin(), (a).end()
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#define forn(i,a,b) for (int i = a; i <= b; i++)
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define rc(s) return cout<<s,0
#define rcc(s) cout<<s,exit(0)
#define er erase
#define in insert
#define pi pair <int, int>
#define pii pair <pi, pi>
# define sz(x) (int)((x).size())
#define inf 1000000000
const ll mod = 1000000007;
int n,k,a,b,c,f[1<<28],nr,frst=1;
int32_t main(){
ios_base::sync_with_stdio(0); cin.tie(); cerr.tie(); cout.tie();
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
	cin>>n>>a>>b>>c;
	k=b; f[b]++; 
	forn(i,2,n){
		f[(a * k + b) % c]++;
	//	cout<<k<<' ';
		k=(a * k + b) % c;
	}
	forn(i,0,(1<<28)-1){
		if(f[i] && frst)cout<<i<<' ',frst=0,nr--;
		nr+=f[i];
		if(f[i]){
			int kk=nr/10;
			nr%=10;
			while(kk!=0){
				cout<<i<<' ';
				kk--;
			}	
		}
		
	}
return 0;
}