Cod sursa(job #551462)

Utilizator blastoiseZ.Z.Daniel blastoise Data 10 martie 2011 20:04:20
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
#include <string.h>

using namespace std;

int i,N;
int v[500001],x[500001];

inline void radix()
{
	int end,b,size,i;

	b=0;
	end=0;
	while(!end)
	{
		end=1;

		size=0;
		memset(x,0,sizeof(x));

		for(i=1;i<=N;i++)
			if((v[i]&(1<<b))==0)
			{
				x[++size]=v[i];
				v[i]=-1;
			}
			else end=0;

		for(i=1;i<=N;i++)
		{
			if(v[i]!=-1) x[++size]=v[i];
			v[i]=x[i];
		}

		b++;
	}
}

int main()
{
	ifstream in("algsort.in");
	ofstream out("algsort.out");

	in>>N;

	for(i=1;i<=N;i++) in>>v[i];

	radix();

	for(i=1;i<N;i++) out<<v[i]<<' ';
	out<<v[N]<<'\n';

	return 0;
}