Cod sursa(job #2031178)

Utilizator LauraNaduLaura Nadu LauraNadu Data 2 octombrie 2017 20:03:33
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long long n, v[500002], x, k;
void inserare(long long x)
{
    v[++k]=x;
    int c=k;
    int p=k/2;
    while(p>0 && v[c]>v[p])
    {
        swap(v[c], v[p]);
        c=p;
        p=c/2;
    }
}
void stergere(long long rad)
{
    swap(v[1], v[rad]);
    k--;
    int p=1;
    int c=2;
    while(c<=k)
    {
        if(c+1<=k && v[c+1]>v[c])
            c++;
        if(v[c]>v[p])
        {
            swap(v[c], v[p]);
            p=c;
            c*=2;
        }
        else break;
    }
}
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
    {
        f>>x;
        inserare(x);
    }
    for(int i=n;i>0;i--)
        stergere(i);
    for(int i=1;i<=n;i++)
        g<<v[i]<<" ";
    return 0;
}