Cod sursa(job #2292689)

Utilizator raduandreicaRadu Andreica raduandreica Data 29 noiembrie 2018 20:32:19
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
//Heapsort
#include <iostream>
#include <fstream>
using namespace std;
int i=2,j,n,v[500001];
void push(int x)
{
    v[i]=x;
    int i0=i;
    while(v[i0/2]>v[i0] && i0/2>0)
    {
        swap(v[i0/2],v[i0]);
        i0=i0/2;
    }
    i++;
}
void pop_varf()
{
    fout<<v[1]<<" ";
    i=1;
    while(j<n)
    {
        if(v[2*i]!=0 && v[2*i]<=v[2*i+1])
            {v[i]=v[2*i]; i=2*i;}
        else if(v[2*i]>=v[2*i+1] && v[2*i+1]!=0)
            {v[i]=v[2*i+1]; i=2*i+1;}
        else if(v[2*i]!=0)
            {v[i]=v[2*i]; i=2*i;}
        else if(v[2*i+1]!=0)
            {v[i]=v[2*i+1];i=2*i+1;}
        else break;
    }
    v[i]=0;
}
int main()
{
    ifstream fin("algsort.in");ofstream fout("algsort.out");
    int a;
    fin>>n;fin>>v[1];
    for(j=2;j<=n;j++) {fin>>a; push(a);}
    for(j=1;j<=n;j++) pop_varf();
}