Pagini recente » Cod sursa (job #2089238) | Cod sursa (job #1785172) | Cod sursa (job #3121779) | Cod sursa (job #464872) | Cod sursa (job #1241038)
#include<fstream>
#include<deque>
#include<vector>
using namespace std;
#define byte 0x000000ff
ifstream in("radixsort.in");
ofstream out("radixsort.out");
deque<int> bucket[2][256];
void rsort(vector<int>& v) {
int i, j, k;
for (i = 0; i < v.size(); ++i)
bucket[0][v[i]&0x000000ff].push_back(v[i]);
for (i = 0; i < 256; ++i) {
while (!bucket[0][i].empty()) {
int &e = bucket[0][i].front();
bucket[1][(e&0x0000ff00)>>8].push_back(e);
bucket[0][i].pop_front();
}
}
for (i = 0; i < 256; ++i) {
while (!bucket[1][i].empty()) {
int &e = bucket[1][i].front();
bucket[0][(e&0x00ff0000)>>16].push_back(e);
bucket[1][i].pop_front();
}
}
for (i = 0; i < 256; ++i) {
while (!bucket[0][i].empty()) {
int &e = bucket[0][i].front();
bucket[1][(e&0xff000000)>>8].push_back(e);
bucket[0][i].pop_front();
}
}
k = 0;
for (i = 0; i < 256; ++i) {
while (!bucket[1][i].empty()) {
v[k++] = bucket[1][i].front();
if((k-1)%10==0)
out<<v[k-1]<<" ";
bucket[1][i].pop_front();
}
}
}
int main()
{
unsigned long N,A,B,C,D;
in>>N>>A>>B>>C;
vector<int> v;
D=B;
for(int i=1;i<=N;i++)
{
v.push_back(D);
D=(A * D + B) % C;
}
rsort(v);
in.close();
out.close();
return 0;
}