Pagini recente » Cod sursa (job #2954951) | Cod sursa (job #2108774) | Cod sursa (job #1470690) | Cod sursa (job #2118885) | Cod sursa (job #2438764)
#include<bits/stdc++.h>
#define Nmax 3000001
using namespace std;
int G[Nmax];
int n,m,k;
int h[Nmax],tata[Nmax];
void init()
{ int i;
ifstream fin("sdo.in");
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>G[i];
fin.close();
}
void CombHeap(int i,int k) //O(log n)
{
int tata=i,fiu=i*2;
int v=G[i];
while(fiu<=k)
{
if(fiu<k)
if(G[fiu]<G[fiu+1]) fiu++;
if(v<G[fiu])
{
G[tata]=G[fiu];
tata=fiu;
fiu=fiu*2;
}
else fiu=k+1;
}
G[tata]=v;
}
void create_heap()
{
for(int i=n/2;i;i--)
CombHeap(i,n);
}
//sortarea are O(M log M)
int heapsort()
{
int aux;
create_heap();
for(int i=n;i>k;i--)
{
aux=G[1];
G[1]=G[i];
G[i]=aux;
CombHeap(1,i-1);
}
return G[1];
}
int main()
{
long i,j,min_c,max_c,M=0,cost,t;
i=1;
init();
heapsort();
ofstream fout("sdo.out");
fout<<heapsort()<<' ';
fout.close();
}