Cod sursa(job #1520859)

Utilizator adimAlexander Dmitriev adim Data 9 noiembrie 2015 17:11:41
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
// algsort
#include <bits/stdc++.h>
#define pb push_back
using namespace std;

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

int n;
vector<int> P;
vector<int> V;

void read() {
	f>>n;
	for (int i=1;i<=n;i++) {
		int x; f>>x;
		V.pb(x);
	}
}

int sortare(int left, int right) {
	P.resize(0);
	int mij = (left+right)/2;
	int i, j;
	for (i=left, j=mij+1; i <= mij && j <= right;) {
		if (V[i] < V[j]) {
			P.pb(V[i]);
			i++;
		} else {
			P.pb(V[j]);
			j++;
		}
	}
	
	for (;i <= mij;i++)
		P.pb(V[i]);
	for (;j <= right;j++)
		P.pb(V[j]);
		
	int p = 0;
	for (i=left; i<=right;i++) {
		V[i] = P[p];
		p++;
	}
}

void divide(int left, int right) {
	if (left < right) {
		int mij = (left+right)/2;
		divide(left, mij);
		divide(mij+1, right);
		sortare(left, right);
	}
}

void output() {
	for (unsigned i=0;i<V.size();i++) {
		g<<V[i]<<' ';
	}
}

int main() {
	
	read();
	divide(0,n-1);
	output();

	f.close(); g.close();
	return 0;
}