Pagini recente » Cod sursa (job #2059481) | Cod sursa (job #2471828) | Cod sursa (job #1774816) | Cod sursa (job #2904610) | Cod sursa (job #1556254)
#include <fstream>
#include <set>
#define ll long long
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
ll n,k,a[3000005];
multiset<ll> q;
multiset<ll,greater<ll> > p;
int main()
{
ll i,mediana,inceput,sfarsit,min=0,sum;
ll sumQ=0,sumP=0;
in>>n>>k;
for(i=1;i<=n;i++) in>>a[i];
q.insert(a[1]);
sumQ=a[1];
for(i=2;i<=n;i++)
{
if(p.size()<q.size() && p.size()!=0)
{
p.insert(*q.begin());
q.erase(*q.begin());
}
if(a[i]<*q.begin())
{
p.insert(a[i]);
}else{
q.insert(a[i]);
}
}
for(i=1;i<=k;i++)
{
p.erase(a[i]);
if(p.size()<q.size())
{
sumQ-=*q.begin();
sumP+=*q.begin();
p.insert(*q.begin());
q.erase(*q.begin());
}else if(q.size()+1<p.size()){
sumP-=*p.begin();
sumQ+=*p.begin();
q.insert(*p.begin());
p.erase(*p.begin());
}
}
mediana=*p.begin();
out<<mediana;
in.close();
out.close();
return 0;
}