Cod sursa(job #2730244)

Utilizator bubblegumixUdrea Robert bubblegumix Data 25 martie 2021 23:23:26
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;

void mergesort(vector<int>& v, int st, int dr, vector<int>& temp)
{
	if (st < dr)
	{
		int mij = (st + dr) / 2;

		mergesort(v, st, mij, temp);
		mergesort(v, mij+1, dr,temp);
		int i = st, j = mij+1, k = 0;
		while (i <= mij && j <= dr)
			if (v[i] < v[j])
				temp[++k] = v[i++];
			else
				temp[++k] = v[j++];
		while (i <= mij)
				temp[++k] = v[i++];
		while (j <= dr)
				temp[++k] = v[j++];
		for (int cnt1 = st, cnt2 = 1; cnt1 <= dr; cnt1++, cnt2++)
			v[cnt1] = temp[cnt2];

	}
}

int main()
{
	f >> n;
	vector<int> v(n + 1), temp(n + 1);
	for (int i = 1; i <= n; i++)
		f >> v[i];
	mergesort(v, 1, n, temp);
	for (int i = 1; i <= n; i++)
		g << v[i] << " ";
}