Cod sursa(job #1646818)

Utilizator qwertyuiTudor-Stefan Berbinschi qwertyui Data 10 martie 2016 17:50:53
Problema Cuplaj maxim in graf bipartit Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

ifstream fin ("bleach.in");
ofstream fout ("bleach.out");

priority_queue <long long , vector<long long>, greater<long long> > data;
int N, K;

int main()
{
    fin >>N >>K;

    long long pmin = 0;
	long long p = pmin;

    for (int i = 1; i <= K + 1; ++i)
	{
		long long x;
		fin >>x;

		data.push(x);
	}

	if (p < data.top())
		{
			pmin += data.top() - p;
			p = 2*data.top();
		}
		else
			p += data.top();

	data.pop();

	for (int i = K + 2; i <= N; ++i)
	{
		long long x;
		fin >>x;

		data.push(x);

		if (p < data.top())
		{
			pmin += data.top() - p;
			p = 2*data.top();
		}
		else
			p += data.top();

		data.pop();

	}

	while (!data.empty())
	{
		if (p < data.top())
		{
			pmin += data.top() - p;
			p = 2*data.top();
		}
		else
			p += data.top();

		data.pop();
	}


	fout <<pmin <<'\n';

    return 0;
}