Cod sursa(job #785033)

Utilizator Anonimul99Draghici Septimiu Anonimul99 Data 7 septembrie 2012 17:23:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#include<algorithm>
using namespace std;
int v[500001];
void read(int &n)
{
	int i;
	ifstream fin("algsort.in");
	fin>>n;
	for(i=1;i<=n;++i)
		fin>>v[i];
	fin.close();
}
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;++j,++i)
		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);
}
void out(int n)
{
	int i;
	ofstream fout("algsort.out");
	for(i=1;i<=n;++i)
		fout<<v[i]<<" ";
	fout.close();
}
int main()
{
	int n;
	read(n);
	merge(1,n);
	out(n);
	return 0;
}