Pagini recente » Cod sursa (job #1875746) | Cod sursa (job #1575036) | Cod sursa (job #2966464) | Cod sursa (job #915514) | Cod sursa (job #1759929)
#include <fstream>
#include <vector>
#define INFILE "radixsort.in"
#define OUTFILE "radixsort.out"
using std::vector;
using std::ifstream;
using std::ofstream;
int main()
{
vector<int> v;
int n,a,b,c;
ifstream fin(INFILE);
ofstream fout(OUTFILE);
fin >> n >> a >> b >> c;
v.reserve(n);
for (auto i = 0; i < n; ++i) {
if (i == 0)
v.push_back(b);
else
v.push_back((v[i-1] * a + b) % c);
}
vector<int> zeros;
vector<int> ones;
zeros.reserve(n);
ones.reserve(n);
for (auto i = 0; i < 32; ++i) {
zeros.clear();
ones.clear();
for (auto &x : v){
if (x & (1 << i))
ones.push_back(x);
else
zeros.push_back(x);
}
v.clear();
for (auto &x : zeros)
v.push_back(x);
for (auto &x : ones)
v.push_back(x);
}
for (auto i = 0; i < v.size(); i += 10)
fout << v[i] << " ";
fin.close();
fout.close();
return 0;
}