Cod sursa(job #3254089)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 6 noiembrie 2024 08:48:39
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

const int nmax = 500000;

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

int pivot(int st,int dr)
{
    int ind = st;
    int trv = 1;
    while(st<=dr)
    {
        if(trv==1 && v[ind] > v[dr]){
            swap(v[ind],v[dr]),ind++,trv=1-trv;continue;}
        else if(trv==0 && (v[ind] > v[st] && st > ind) || (v[ind] < v[st] && st<ind)){
            swap(v[ind],v[st]),ind++,trv=1-trv;continue;}
        st+=1-trv;
        dr-=trv;
    }
    return ind;
}
void quick_sort(int st,int dr)
{
    if( st >= dr)
        return;
    int p = pivot(st,dr);
    quick_sort(st,p);
    quick_sort(p+1,dr);
}

int main()
{
    fin>>n;
    for(int i=1;i<=n;i++) fin>>v[i];
    quick_sort(1,n);
    for(int i=1;i<=n;i++) fout<<v[i]<<' ';
}