Cod sursa(job #3286931)

Utilizator AswVwsACamburu Luca AswVwsA Data 14 martie 2025 20:21:26
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <algorithm>
#include <ctime>
#include <cstdlib>
#define ll long long
using namespace std;

const int NMAX = 5e5;

int v[NMAX + 1];

void quick(int st, int dr)
{
    if (st >= dr)
        return ;
    int i, j = st - 1, putin, mult;
    int pivot = st + rand() % (dr - st);
    int val = v[pivot];
    for (i = st; i <= dr; i++)
        if (v[i] <= val)
        {
            swap(v[++j], v[i]);
        }
    swap(v[pivot], v[j]);
    pivot = j;
    for (j = pivot; v[pivot] == v[j] and j >= st; j--);
    putin = j;
    for (j = pivot + 1; v[pivot] == v[j] and j <= dr; j++);
    mult = j;
    quick(st, putin);
    quick(mult, dr);
}

int main()
{
    ifstream cin("algsort.in");
    ofstream cout("algsort.out");
    srand(time(0));
    int n, i;
    cin >> n;
    for (i = 1; i <= n; i++)
        cin >> v[i];
    quick(1, n);
    for (i = 1; i <= n; i++)
        cout << v[i] << " ";
}