Cod sursa(job #2652936)

Utilizator bogdan_modoleaBogdan Modolea bogdan_modolea Data 26 septembrie 2020 14:31:49
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
#define NMAX 500001
using namespace std;
typedef long long ll;

string file="algsort";

ifstream fin(file+".in");
ofstream fout(file+".out");

int n;
int a[NMAX];

void interclasare(int st, int dr) {
    int m, k, i, j;
    int merg[NMAX];
    m = (st + dr) / 2;
    i = st;
    j = m + 1;
    k = st - 1;
    while (i <= m && j <= dr) {
        if (a[i] < a[j]) merg[++k] = a[i++];
        else merg[++k] = a[j++];
    }
    while (i <= m) merg[++k] = a[i++];
    while (j <= dr) merg[++k] = a[j++];
    for (i = st; i <= dr; i++) a[i] = merg[i];
}

void mergesort(int st, int dr) {
    if (st < dr) {
        int m = (st + dr) / 2;
        mergesort(st, m);
        mergesort(m + 1, dr);
        interclasare(st, dr);
    }
}

int main() {
    int i;
    fin >> n;
    for (i = 1; i <= n; i++)
        fin >> a[i];
    mergesort(1, n);
    for (i = 1; i <= n; i++)
        fout << a[i] << " ";
    return 0;
}