Pagini recente » Cod sursa (job #1142759) | Cod sursa (job #116209) | Cod sursa (job #681542) | Cod sursa (job #1600209) | Cod sursa (job #1163872)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
int main()
{
unsigned int n,a,b,c,i;
vector<unsigned int> v,v1,v2;
in>>n>>a>>b>>c;
v1.resize(65536);
v2.resize(n);
v.push_back(b);
v1.at(b&0x000000FF)++;
for(i=1;i<n;i++)
{
v.push_back((1LL*v.at(i-1)*a+b)%c);
v1.at(v.at(i)&0x0000FFFF)++;
}
for(i=1;i<1<<16;i++)
v1.at(i)+=v1.at(i-1);
for(i=n-1;i<n;i--)
v2.at(--v1.at(v.at(i)&0x0000FFFF))=v.at(i);
v1.resize(0);
v.resize(0);
v1.resize(65536);
v.resize(n);
for(i=0;i<n;i++)
v1.at((v2.at(i)&0xFFFF0000)>>16)++;
for(i=1;i<1<<16;i++)
v1.at(i)+=v1.at(i-1);
for(i=n-1;i<n;i--)
v.at(--v1.at((v2.at(i)&0xFFFF0000)>>16))=v2.at(i);
for(i=0;i<v.size();i+=10) out<<v.at(i)<<" ";
}