Cod sursa(job #2986431)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 28 februarie 2023 17:02:13
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <cstdio>
#include <cmath>
#include <climits>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <bitset>
#include <unordered_map>
#include <cstring>
#include <algorithm>

#define NMAX 500003

using namespace std;


FILE* fin, * fout;

int n;
int v[NMAX];

void mergeSort(int st, int dr)
{
	if (st < dr)
	{
		int mij = (st + dr) / 2;
		mergeSort(st, mij);
		mergeSort(mij + 1, dr);

		//interclasez
		int i = st, j = mij + 1;
		vector<int>sol;
		while (i <= mij && j <= dr)
		{
			if (v[i] < v[j])
			{
				sol.push_back(v[i]);
				i++;
			}
			else {
				sol.push_back(v[j]);
				j++;
			}
		}
		while (i <= mij)
		{
			sol.push_back(v[i]);
			i++;

		}
		while (j <= dr)
		{


			sol.push_back(v[j]);
			j++;

		}

		for (int i = 0; i < sol.size(); i++)
		{
			v[st + i] = sol[i];
		}
	}
}

int main()
{
	fin = fopen("algsort.in", "r");
	fout = fopen("algsort.out", "w");

	fscanf(fin,"%d", &n);
	for (int i = 1; i <= n; i++)
	{
		fscanf(fin,"%d", &v[i]);
	}
	mergeSort(1, n);
	for (int i = 1; i <= n; i++)
	{
		fprintf(fout,"%d ", v[i]);
	}
	return 0;
}