Cod sursa(job #2783765)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 15 octombrie 2021 02:11:59
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
	
using namespace std;
	
const string FILENAME = "algsort";	
ifstream fin(FILENAME + ".in");
ofstream fout(FILENAME + ".out");
	
vector < int > v;

int Partition(int lo, int hi) {
    int idx = (lo + hi) / 2;
    swap(v[idx], v[hi]);

    int i = lo;
    for (int j = lo; j < hi; ++j) {
        if (v[j] <= v[hi]) {
            swap(v[i], v[j]);
            ++i;
        }
    }
    swap(v[i], v[hi]);

    return i;
}

void QSort(int lo, int hi) {
    if (lo >= hi) return;

    int part = Partition(lo, hi);
    QSort(lo, part - 1);
    QSort(part + 1, hi);
}

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

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

    QSort(0, n - 1);

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