Cod sursa(job #785024)

Utilizator killerkiller11Balas Tudor killerkiller11 Data 7 septembrie 2012 17:11:42
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<algorithm>
using namespace std;
int v[500001];
void inter(int ft,int mid,int bk)
{
	int i,j,k=0,a[500001];
	for(i=ft,j=mid+1;i<=mid&&j<=bk;)
	{
		a[++k]=min(v[i],v[j]);
		if(v[i]<v[j])
			++i;
		else
			++j;
	}
	for(;i<=mid;++i)
		a[++k]=v[i];
	for(;j<=bk;++j)
		a[++k]=v[j];
	for(i=ft,j=1;j<=k;++i,++j)
		v[i]=a[j];	
}
void merge(int ft,int bk)
{
	if(ft==bk)
		return;
	int mid=(ft+bk)>>1;
	merge(ft,mid);
	merge(mid+1,bk);
	inter(ft,mid,bk);
}


int main()
{
	ifstream fin("algsort.in");
	ofstream fout("algsort.out");
	int n;
	fin>>n;
	for(int i=1;i<=n;++i)
		fin>>v[i];
	merge(1,n);
	for(int i=1;i<=n;++i)
		fout<<v[i]<<" ";
	return 0;
}