Cod sursa(job #893927)

Utilizator harababurelPuscas Sergiu harababurel Data 26 februarie 2013 18:50:13
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 500005
using namespace std;

int n, v[nmax];
vector <int> temp;

int mergesort(int st, int dr) {
	if(st == dr) return 1;
	
	int mij = (st + dr) / 2, i, j;

	mergesort(st, mij);
	mergesort(mij+1, dr);

	temp.clear();

	for(i = st, j = mij+1; i <= mij && j <= dr; ) {
		if(v[i] < v[j]) temp.push_back(v[i]), i++;
		else			temp.push_back(v[j]), j++;
	}
	
	while(i <= mij) temp.push_back(v[i]), i++;
	while(j <= dr)  temp.push_back(v[j]), j++;

	for(i = st, j = 0; i <= dr; i++) v[i] = temp[j], j++;

	return 0;
}

int main() {
	ifstream f("algsort.in");
	ofstream g("algsort.out");

	f>>n;
	for(int i=1; i<=n; i++) f>>v[i];

	mergesort(1, n);

	for(int i=1; i<=n; i++) g<<v[i]<<" "; g<<"\n";

	return 0;
}