Cod sursa(job #821078)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 21 noiembrie 2012 17:37:53
Problema Statistici de ordine Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<cstdio>
#include<algorithm>
using namespace std;
#define NM 3000005
int v[NM];
int N,k;
inline void coboara(int k) {
    int son = k;
    while (1) {
        if (k<<1 <=N && v[k<<1]<v[k]) {
            son = k<<1;
        }
        if ((k<<1) +1 <= N && v[(k<<1)+1]<v[son]) {
            son = (k<<1)+1;
        }
        if (k==son) {
            return;
        }
        swap(v[k],v[son]);
        k=son;
    }

}
int main () {
    freopen("sdo.in","r",stdin);
    freopen("sdo.out","w",stdout);
    scanf("%d%d",&N,&k);
    for (int i=1; i<=N; ++i) {
        scanf("%d",&v[i]);
    }
    for (int i=N>>1; i; --i) {
        coboara(i);
    }
    int rez = v[1];
    while (k--) {
        rez= v[1];
        swap(v[1],v[N]);
        --N;
        coboara(1);
    }
    printf("%d",rez);
    return 0;
}