Pagini recente » Cod sursa (job #2475026) | Cod sursa (job #1570816) | Cod sursa (job #2259187) | Cod sursa (job #1593173) | Cod sursa (job #1223300)
#include <cstdio>
#include <vector>
#include <algorithm>
#define MASK 255
using namespace std;
int N;
vector<pair<int,int> > Sus,Jos;
void Sort(vector<pair<int,int> >&V,int disp,int cf1,int cf2)
{
vector<pair<int,int> > bucket[256];
for(int i = 0; i < (int)V.size(); ++i)
bucket[((V[i].first*cf1 + V[i].second*cf2)>>disp) & MASK ].push_back(V[i]);
for(int i = 0,pz = 0; i <= 255; ++i)
for(int j = 0; j < (int) bucket[i].size(); ++j,++pz)
V[pz] = bucket[i][j];
}
void read()
{
scanf("%d",&N);
int a,b,c;
for(int i = 1; i <= N; ++i){
scanf("%d",&b);
Jos.push_back(make_pair(b,0));
///Sus.push_back(make_pair(a,c));
}
}
void Bucket()
{
for(int i = 0; i < 32; i += 8)
{
///Sort(Sus,i,0,1);
Sort(Jos,i,0,1);
}
for(int i = 0; i < 32; i += 8)
{
///Sort(Sus,i,1,0);
Sort(Jos,i,1,0);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
read();
Bucket();
for(int i = 0; i < N; ++i )
printf("%d ",Jos[i].first);
return 0;
}