Pagini recente » Cod sursa (job #229774) | Cod sursa (job #2881899) | Cod sursa (job #1326297) | Cod sursa (job #2469282) | Cod sursa (job #1163787)
#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);
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);
v=v2;
v1.resize(0);
v2.resize(0);
v1.resize(65536);
v2.resize(n);
for(i=0;i<n;i++)
v1.at((v.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--)
v2.at(--v1.at((v.at(i)&0xFFFF0000)>>16))=v.at(i);
v=v2;
for(i=0;i<v.size();i+=10) out<<v.at(i)<<" ";
}