Pagini recente » Cod sursa (job #818426) | Cod sursa (job #1120012) | Cod sursa (job #2430571) | Cod sursa (job #1264527) | Cod sursa (job #2947653)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
void rearrange(int* v, int N, int val){
stack<int> zeros, ones;
for(int i=0;i<N;i++)
if((v[i]/val)%2 == 0){
zeros.push(v[i]);
}else{
ones.push(v[i]);
}
for(int i=N-1;i>=0;i--)
if(!ones.empty()){
v[i] = ones.top();
ones.pop();
}else{
v[i] = zeros.top();
zeros.pop();
}
return;
}
void radix_sort(int* v, int N){
int val = 1;
for(int i=0;i<31;i++){
rearrange(v, N, val);
if(i!=30)
val*=2;
}
}
int main()
{
int N,A,B,C;
f>>N>>A>>B>>C;
int v[N]; v[0] = B;
for(int i=1;i<N;i++)
v[i] = (int)(((long long) A * (long long)v[i-1] + (long long)B) % (long long)C);
radix_sort(v, N);
for(int i=0;i<N;i+=10)
g<<v[i]<<' ';
return 0;
}