Cod sursa(job #2068717)

Utilizator darisavuSavu Daria darisavu Data 18 noiembrie 2017 10:40:14
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,v[500005],a[500005];
void down(int p)
{
    if(p*2+1<=n&&(v[p*2]>v[p]||v[p*2+1]>v[p]))
    {
        if(v[p*2]>v[p*2+1])
        {
            swap(v[p],v[p*2]);
            down(p*2);
        }
        else
        {
            swap(v[p],v[p*2+1]);
            down(p*2+1);
        }
    }
    else if(p*2<=n&&v[p*2]>v[p])
    {
        swap(v[p*2],v[p]);
    }
}
void up(int p)
{
    if(p>1&&v[p/2]<v[p])
    {
        swap(v[p],v[p/2]);
        up(p/2);
    }
}
void add(int x)
{
    v[++n]=x;
    up(n);
}
void dell(int p)
{
    swap(v[p],v[n]);
    n--;
    up(p);
    down(p);
}
int main()
{
    int i,x,m;
    f>>m;
    for(i=1; i<=m; i++)
    {
        f>>x;
        add(x);
    }
    while(n)
    {
        a[n]=v[1];
        dell(1);
    }
    for(i=1;i<=m;i++) g<<a[i]<<" ";
    return 0;
}