Cod sursa(job #3242074)

Utilizator CondoracheAlexandruCondorache Alexandru CondoracheAlexandru Data 8 septembrie 2024 15:55:16
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.33 kb
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("popcnt,avx2")
#define ll long long
#define pb push_back
#define F first
#define S second
#define endl '\n'
#define all(a) (a).begin(),(a).end()
using namespace std;
const int maxn = 1e5 + 5;


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

int partition(vector<int>& arr, int low, int high)
{
    int pivot = arr[high];    // pivot
    int i = (low - 1);  // Index of smaller element

    for (int j = low; j <= high - 1; j++)
    {
        // If current element is smaller than or
        // equal to pivot
        if (arr[j] <= pivot)
        {
            i++;    // increment index of smaller element
            swap(arr[i], arr[j]);
        }
    }
    swap(arr[i + 1], arr[high]);
    return (i + 1);
}

void quick_sort(vector<int>& a, int low, int high) {
    if (low >= high) {
        return;
    }
    int pivot = partition(a, low, high);
    quick_sort(a, pivot + 1, high);
    quick_sort(a, low, pivot); 
}

void solve() {
    int n;
    fin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        fin >> a[i];
    }
    quick_sort(a, 0, n - 1);
    for (int i = 0; i < n; i++) {
        fout << a[i] << " ";
    }
    fout << endl;
}
 
int main() {
    int t = 1;
    // fin >> t;
    while (t--) {
        solve();
    }
    return 0;
}