Cod sursa(job #2347396)

Utilizator tester_100Alin Barosanu tester_100 Data 18 februarie 2019 19:11:57
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>
#define nmax 100005

using namespace std;

typedef pair<int, int> pii;


vector<int>v;

int N, M;

inline int ComputePivot(int left, int right) {
    int pivot = v[right];
    int leftIndex = left;
    for (int i = left + 1; i < right; ++i) {
        if (v[i] < pivot) {
            swap(v[i], v[leftIndex]);
            leftIndex++;
        }
    }
    swap(v[right], v[leftIndex]);
    return leftIndex;
}

void QSort(int left, int right) {
    if (left < right) {
        int pivot = ComputePivot(left, right);
        QSort(left, pivot - 1);
        QSort(pivot + 1, right);
    }
}

int main(){
    int i;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
//    ios::sync_with_stdio(false);
    cin >> N;
    for (int i = 0; i < N; ++i) {
        int x;
        cin >> x;
        v.push_back(x);
    }
    QSort(0, N - 1);
    for (auto it: v) {
        cout << it <<" ";
    }
    cout << "\n";
    return 0;
}