Cod sursa(job #2509667)

Utilizator paul3ioanCirstean Paul Ioan paul3ioan Data 14 decembrie 2019 15:14:35
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define pb push_back
#define optimize ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define ll long long
#define FILEIN "algsort.in"
#define FILEOUT "algsort.out"
using namespace std;
ifstream fin(FILEIN);
ofstream fout(FILEOUT);
void citire();
int v[500001],sol[500001],n;
void rez();
void mergesort(int ,int );
void afis();
int main()
{
	fin>>n;
	for(int i=1;i<=n;i++)
	fin>>v[i];
	mergesort(1,n);
	for(int i=1;i<=n;i++)
		fout<<v[i]<<" ";		
}
void mergesort(int st,int dr)
{
	if(dr-st<=1)
		{
			if(v[st]>v[dr]) swap(v[st],v[dr]);
		}
	else
		{
			int mij=(dr+st)/2;
			mergesort(st,mij);
			mergesort(mij+1,dr);
			int k=st,i=st,j=mij+1;
			while(i<=mij && j<=dr)
			{
				if(v[i]>v[j])
					sol[k++]=v[j++];
				else
					sol[k++]=v[i++];
			}
			while(i<=mij)
				sol[k++]=v[i++];
			while(j<=dr)
				sol[k++]=v[j++];
			for(int i=st;i<=dr;i++)
				v[i]=sol[i];
		}
}