Cod sursa(job #3254092)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 6 noiembrie 2024 08:57:34
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 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 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)
{
    for(int i = 1; i < l/2; i ++){
        if(i%2) swap(v[i],v[l-i]);
    }
    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]<<' ';

}