Cod sursa(job #1013387)

Utilizator NitaMihaitavoidcube NitaMihaita Data 20 octombrie 2013 20:37:49
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<iostream>
#include<fstream>
using namespace std;

int v[500001],vec[500001];
void _merge (int a, int q, int b)
	{
		int i=0,p1,p2;
		p1=a, p2=q+1;
		/*
		while(p1<=q && p2<=b)
            if(v[p1]<v[p2])vec[++i]=v[p1++];
            else vec[++i]=v[p2++];
        while(p1<=q)vec[++i]=v[p1++];
        while(p2<=b)vec[++i]=v[p2++];
		*/
		while (p1<=q || p2<=b)
			if (p1<=q && p2<=b)
				if (v[p1]<v[p2])
					vec[++i]=v[p1++];
				else
					vec[++i]=v[p2++];
			else if (p1<=q)
				vec[++i]=v[p1++];
			else if(p2<=b)
				vec[++i]=v[p2++];

		for (i=a; i<=b; i++)
			{v[i]=vec[i-a+1];
			}

	}
void _sort (int a, int b)
	{	int q;
		if (a<b)
			{
				q=(a+b)/2;
				_sort (a,q);
				_sort (q+1,b);
				_merge (a,q,b);
			}
	}

int main()
{
	int n,i;
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	f>>n;
	for (i=1; i<=n; i++)
		 f>>v[i];

	_sort (1,n);
    for(i=1; i<=n; i++)
		g<<v[i]<<" ";
	return 0;
}