Cod sursa(job #2297492)

Utilizator cc4infinityCojocaru Catalin cc4infinity Data 5 decembrie 2018 21:58:14
Problema Statistici de ordine Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("sdo.in");
ofstream fout("sdo.out");

int n,i,k,h[3000002],x;

void sus(int nod)
{
    if (nod>1 && h[nod/2]<h[nod])
    {
        swap(h[nod],h[nod/2]);
        sus(nod/2);
    }
}

void jos(int nod)
{
    int son=nod*2;
    if (son<=n)
    {
        if (son+1<=n)
            if (h[son]>h[nod] || h[son+1]>h[nod])
            {
                if (h[son]>h[son+1])
                    {swap(h[nod],h[son]); jos(son);}
                else {swap(h[nod],h[son+1]); jos(son+1);}
            }
        if (h[son]>h[nod]) {swap(h[nod],h[son]); jos(son);}
    }
}

int main()
{
    fin>>n>>k;
    for (i=1;i<=k;i++)
    {
        fin>>h[i];
        sus(i);
    }
    for (;i<=n;i++)
    {
        fin>>x;
        if (x<h[1])
        {
            h[1]=x;
            jos(1);
        }
    }
    fout<<h[1];
    return 0;
}