Cod sursa(job #3365017)

Utilizator daviddxmqStan David Andrei daviddxmq Data 15 septembrie 2026 19:25:11
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <cstdio>

using namespace std;

const int MAXN = 500005;

int n;
int arr[MAXN];
int temp[MAXN];

void sortare(int st, int dr) {
    if (st == dr)
        return;
    int mid = (st + dr) / 2;
    sortare(st, mid);
    sortare(mid + 1, dr);
    int i = st, j = mid + 1, k = st;
    while (i <= mid && j <= dr)
        if (arr[i] > arr[j]) {
            temp[k] = arr[j];
            ++k, ++j;
        }
        else {
            temp[k] = arr[i];
            ++k, ++i;
        }
    while (i <= mid) {
        temp[k] = arr[i];
        ++k, ++i;
    }
    while (j <= dr) {
        temp[k] = arr[j];
        ++k, ++j;
    }
    for (int idx = st; idx <= dr; ++idx)
        arr[idx] = temp[idx];
}

int main() {
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    cin >> n;
    for (int i = 0; i < n; ++i)
        cin >> arr[i];
    sortare(0, n - 1);
    for (int i = 0; i < n; ++i)
        cout << arr[i] << " ";
    return 0;
}