Pagini recente » Cod sursa (job #28438) | Cod sursa (job #2002768) | Cod sursa (job #2003592) | Cod sursa (job #2037890) | Cod sursa (job #867824)
Cod sursa(job #867824)
#include<fstream>
#include<queue>
#define FOR(i,a,b)\
for(int i=a; i<=b; ++i)
#define infile "algsort.in"
#define outfile "algsort.out"
#define nMax 200005
#define bits 8
#define vmax 255
using namespace std;
int v[nMax];
queue < int > buckets[1<<bits];
int N;
void read(){
ifstream f(infile);
f >> N;
FOR(i,1,N)
f >> v[i];
f.close();
}
void radix(){
for(int shift = 0; shift < 31; shift += bits){
FOR(i,1,N){
int value = (v[i]>>shift) & vmax;
buckets[value].push(v[i]);
}
v[0] = 0;
FOR(i,0,vmax)
while(!buckets[i].empty()){
v[++v[0]] = buckets[i].front();
buckets[i].pop();
}
}
}
void print(){
ofstream g(outfile);
FOR(i,1,N)
g << v[i] << " ";
g.close();
}
int main(){
read();
radix();
print();
return 0;
}