Cod sursa(job #3252615)

Utilizator ninja_legend_11Vlad Marin-Perianu ninja_legend_11 Data 30 octombrie 2024 12:00:11
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#define MAX 500000

using namespace std;

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

int32_t n, i, j, a[MAX], random1, pivot;

void Sort(int32_t st, int32_t dr)
{
    if(st < dr)
    {
        srand(time(NULL));
        random1 = st+rand()%(dr-st+1);
        pivot = a[random1];
        swap(a[random1], a[dr]);
        i = st-1;
        for(j=st; j < dr; j++)
        {
            if(a[j] < pivot)
            {
                i++;
                swap(a[i], a[j]);
            }
        }
        swap(a[i+1], a[dr]);
        Sort(st, i);
        Sort(i+2, dr);
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);
    srand(time(NULL));
    fin >> n;
    for(i=0; i < n; i++) fin >> a[i];
    Sort(0, n-1);
    for(i=0; i < n; i++) fout << a[i] << ' ';
}