Pagini recente » Cod sursa (job #3254007) | Cod sursa (job #1589935) | Cod sursa (job #764716) | Cod sursa (job #497320) | Cod sursa (job #982795)
Cod sursa(job #982795)
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 30000001
long M[MAXSIZE];
int main()
{
int i, n, k, p;
long x;
freopen("sdo.in", "r", stdin);
freopen("sdo.out", "w", stdout);
scanf("%d %d", &n, &k);
for (i = 1; i <= k; ++i)
{
scanf("%ld", &x);
p = i;
while (p >> 1 && M[p >> 1] < x)
{
M[p] = M[p >> 1];
p >>= 1;
}
M[p] = x;
}
for (i = k + 1; i <= n; ++i)
{
scanf("%ld", &x);
if (x < M[1])
{
int p = 1;
long temp;
M[1] = x;
while (1)
{
int c = 2 * p;
if (c > k) break;
if (c + 1 > k) break;
if (M[c] < M[c + 1]) ++c;
if (M[p] > M[c]) break;
temp = M[p];
M[p] = M[c];
M[c] = temp;
p = c;
}
}
}
printf("%ld\n", M[1]);
return 0;
}