Cod sursa(job #1022141)

Utilizator RaduStefanFMI - Radu Stefan RaduStefan Data 4 noiembrie 2013 20:19:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[500001],b[500001];
void merge(int st,int m,int dr)
{
	int p=st,q=m+1,k=st-1,i;
	while(p<=m && q<=dr)
		if(a[p]<a[q])
			b[++k]=a[p++];
		else 
			b[++k]=a[q++];
	while(p<=m)
		b[++k]=a[p++];
	while(q<=dr)
		b[++k]=a[q++];
	for(i=st;i<=dr;i++)
		a[i]=b[i];
}

	
void mergesort (int st,int dr)
{
	int m;
	m=(st+dr)/2;
	if(st<dr)
	{
		mergesort(st,m);
		mergesort(m+1,dr);
		merge(st,m,dr);
	}
}
int main()
{
	int n,i;
	ifstream fcin("algsort.in");
	ofstream fcout("algsort.out");
	fcin>>n;
	for(i=1;i<=n;i++)
		fcin>>a[i];
	mergesort(1,n);
	for(i=1;i<=n;i++)
		fcout<<a[i]<<" ";
	return 0;
}