Cod sursa(job #3261650)

Utilizator Barbu_MateiBarbu Matei Barbu_Matei Data 7 decembrie 2024 10:13:08
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;

int n;
int v[500001];
int c[500001];

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

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

int main() {
    ifstream cin("algsort.in");
    ofstream cout("algsort.out");
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        cin >> v[i];
    }
    mergesort(1, n);
    for (int i = 1; i <= n; ++i) {
        cout << v[i] << " ";
    }
}