Pagini recente » Cod sursa (job #1349605) | Cod sursa (job #1600182) | Cod sursa (job #1813203) | Cod sursa (job #2202705) | Cod sursa (job #1317799)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
#define MAXN 10000000
#define MOD 215000
struct Elem {
long val, ap;
Elem(long v) {
val = v;
ap = 1;
}
Elem() {}
};
long n;
long long cur, a, b, c;
vector<Elem> H[MOD];
vector<Elem>::iterator it;
bool cmp(const Elem &a, const Elem &b) {
return a.val<b.val;
}
void add(long x) {
for(it = H[x/10000].begin(); it!=H[x/10000].end(); ++it) {
if((*it).val == x) {
(*it).ap++;
return;
}
}
H[x/10000].push_back(Elem(x));
}
int main() {
fin>>n>>a>>b>>c;
cur = b;
for(int i=1; i<=n; i++, cur = (cur*a+b)%c) {
add(cur);
}
for(int i=0; i<MOD; i++) {
sort(H[i].begin(), H[i].end(), cmp);
}
long apcur = 0, curno = 1;
for(int i=0; i<MOD; i++) {
for(it=H[i].begin(); it!=H[i].end(); ++it) {
apcur += (*it).ap;
while(apcur >= curno) {
fout<<(*it).val<<" ";
curno += 10;
}
}
}
}