Pagini recente » Cod sursa (job #2755016) | Cod sursa (job #416395) | Cod sursa (job #1482169) | Cod sursa (job #2245251) | Cod sursa (job #2341723)
#include <bits/stdc++.h>
#define k 500002
#define ll unsigned long long
using namespace std;
fstream f("algsort.in",ios::in);
fstream g("algsort.out",ios::out);
ll v[k],aux[k];
void sortare(ll *in,ll *fin,int a,int b,int bit)
{
int st=a-1,dr=b+1,i;
if(a==b)fin[a]=in[a];
if(bit<0)for(i=a;i<=b;i++)
fin[i]=in[i];
if(a>=b || bit<0)return ;
for(i=a;i<=b;i++)
if( (1<<bit) & in[i] )
fin[--dr]=in[i];
else fin[++st]=in[i];
sortare(fin,in,a,st,bit-1);
sortare(fin,in,dr,b,bit-1);
}
int main()
{
int n,bit;ll m=0;
f>>n;
for(int i=1;i<=n;i++)
{
f>>v[i];
m=max(m,v[i]);
}
for(bit=0;;bit++)
if(1<<(bit+1)> m)
break;
sortare(v,aux,1,n,bit);
for(int i=1;i<=n;i++)
g<<v[i]<<" ";
}