Cod sursa(job #3254093)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 6 noiembrie 2024 09:07:06
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <algorithm>
#include <random>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

const int nmax = 500000;

long long v[nmax + 5];
int n;
int val;

int pivot(int st,int dr)
{
    int trv = 1;
    while(st<dr)
    {
        if(v[st] > v[dr])
            swap(v[st],v[dr]),trv = 1-trv;
        st+=1-trv;
        dr-=trv;
    }
    return st;
}
void quick_sort(int st,int dr)
{
    if( st >= dr)
        return;
    ++val;
    int p = pivot(st,dr);
    quick_sort(st,p-1);
    quick_sort(p+1,dr);
}
void full_sort(long long * v,int l)
{
    shuffle(v+1,v+l+1,default_random_engine(0));
    //for(int i = 1; i < l/2; i ++){
      //  swap(v[i],v[l-i/2]);
    //}
    quick_sort(1,l);
}



int main()
{
    fin>>n;
    for(int i=1;i<=n;i++) fin>>v[i];
    full_sort(v,n);
    //fout<<val<<'\n';
    for(int i=1;i<=n;i++) fout<<v[i]<<' ';

}