Cod sursa(job #2766575)

Utilizator KlinashkaDiacicov Calin Marian Klinashka Data 2 august 2021 13:09:45
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
using namespace std;

int n, a[500001], b[500001];

void mergesort(int st, int dr) {
	if(st<dr) {
		int mj = (st+dr)/2;
		mergesort(st, mj);
		mergesort(mj+1, dr);
		for(int i=st, i1=st, i2=mj+1;i<=dr;i++) {
			if(i1<=mj && i2<=dr) {
				if(a[i1]<a[i2]) b[i] = a[i1++];
				else b[i] = a[i2++];
			}
			else if(i1>mj) b[i] = a[i2++];
			else b[i] = a[i1++];
		}
		for(int i=st;i<=dr;i++)
		    a[i] = b[i];
	}
}

int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    scanf("%d", &n);
    for(int i=0;i<n;i++)
        scanf("%d", &a[i]);   
    mergesort(0, n-1);
    for(int i=0;i<n;i++)
        printf("%d ", a[i]);
}