Pagini recente » Cod sursa (job #2293663) | Cod sursa (job #2792595) | Cod sursa (job #1309768) | Cod sursa (job #1860928) | Cod sursa (job #393857)
Cod sursa(job #393857)
/*
* File: main.cpp
* Author: virtualdemon
*
* Created on February 9, 2010, 7:25 PM
*/
#include <fstream>
#include <iterator>
#define Nmax 3000001
/*
*
*/
using namespace std;
int N;
int Heap[Nmax];
inline void swap( int& x, int& y )
{
int aux=x;
x=y;
y=aux;
}
void DownHeap( int k )
{
int son;
while( true )
{
son=2*k;
if( son > N )
return;
if( son < N && Heap[son] > Heap[son+1] )
++son;
if( Heap[son] >= Heap[k] )
return;
swap( Heap[son], Heap[k] );
k=son;
}
}
int main( void )
{
int k, i;
ifstream in("sdo.in");
in>>N>>k;
copy( istream_iterator<int>(in), istream_iterator<int>(), Heap+1 );
for( i=N/2; i > 0; --i )
DownHeap( i );
for( ; k; --k )
{
i=Heap[1];
Heap[1]=Heap[N];
--N;
DownHeap(1);
}
ofstream out("sdo.out");
out<<i;
return 0;
}