Cod sursa(job #1005955)

Utilizator alabala1vali smerica alabala1 Data 6 octombrie 2013 01:23:30
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<iostream>
#include<fstream>
int a[500000];
void merges(unsigned st, unsigned dr)
{
	if (st == dr)return;
	unsigned  m = (st + dr) / 2;
	merges(st, m);
	merges(m + 1, dr);
	unsigned  c[500000],j = st, z = m + 1, s = 0;
	while (j <= m || z <= dr)
	{
		if (j > m){ c[s++] = a[z++]; continue; }
		if (z > dr){ c[s++] = a[j++]; continue; }
		if (a[j] > a[z])c[s++] = a[z++];
		else c[s++] = a[j++];
	}
	for (j = st, z = 0; z < s; z++, j++)a[j] = c[z];
}
int main()
{int n;


	std::ifstream f("algsort.in");
	f >> n;
	for (int i = 0; i < n; i++)f >> a[i];
	f.close();
	merges(0, n - 1);
	std::ofstream g("algsort.out");
	for (int i = 0; i < n; i++)g << a[i] << " ";
	g.close();
}