Cod sursa(job #3367257)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 6 octombrie 2026 23:56:36
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>

using namespace std;

const int NMAX = 5e5;

int v[1 + NMAX];

void quickSort(int left, int right)
{
    if (left >= right) // == does not work because of the recursive calls with degenerated intervals
        return;

    // pivot
    swap(v[left], v[right]); // v[right] is now pivot
    int idxMove = left;

    for (int i = left; i <= right - 1; ++i)
    {
        if (v[i] < v[right])
        {
            swap(v[i], v[idxMove]);
            ++idxMove;
        }
    }

    swap(v[right], v[idxMove]);

    quickSort(left, idxMove - 1);
    quickSort(idxMove + 1, right);
}

int main()
{
    ifstream in("algsort.in");
    ofstream out("algsort.out");
    ios_base::sync_with_stdio(false);
    in.tie(nullptr);
    out.tie(nullptr);

    int n;
    in >> n;

    for (int i = 1; i <= n; ++i)
        in >> v[i];

    quickSort(1, n);

    for (int i = 1; i <= n; ++i)
        out << v[i] << ' ';
    out << '\n';

    in.close();
    out.close();

    return 0;
}