Cod sursa(job #2900998)

Utilizator petru.theodor07Petru Cristea petru.theodor07 Data 12 mai 2022 18:51:18
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

void mergeSort(vector<int>& v, int st, int dr)
{
    if (st == dr) {
        return;
    }

    vector<int> sortat;
    int mid = (st + dr) / 2;
    mergeSort(v, st, mid);
    mergeSort(v, mid + 1, dr);

    int i = st, j = mid + 1;
    while (i <= mid && j <= dr) {
        if (v[i] >= v[j]) {
            sortat.push_back(v[j++]);
        } else {
            sortat.push_back(v[i++]);
        }
    }

    while (i <= mid) {
        sortat.push_back(v[i++]);
    }

    while (j <= dr) {
        sortat.push_back(v[j++]);
    }

    for (int ct = st; ct <= dr; ct++) {
        v[ct] = sortat[ct - st];
    }
}

int main() {
    int n;
    fin >> n;

    vector<int> v(n);
    for (int i=0; i<n; i++) {
        fin >> v[i];
    }

    mergeSort(v, 0, n - 1);

    for (int i=0; i<n; i++) {
        fout << v[i] << " ";
    }
}