Cod sursa(job #3254096)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 6 noiembrie 2024 09:12:30
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
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)
{
    unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
    shuffle(v+1,v+l+1,default_random_engine(seed));
   //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]<<' ';

}