Cod sursa(job #1387258)

Utilizator mircea.dobreanuMircea Dobreanu mircea.dobreanu Data 13 martie 2015 21:34:22
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <algorithm>
#include <fstream>
#include <numeric>
#include <vector>
using namespace std;
int n, k, res;
vector<int> v;

void read()
{
	ifstream fin("transport.in");
	fin >> n >> k;
	for (int i = 0; i < n; ++i)
	{
		int x;	fin >> x;
		v.push_back(x);
	}
	fin.close();
}

void write()
{
	ofstream fout("transport.out");
	fout << res << '\n';
	fout.close();
}

void solve()
{
	partial_sum(v.begin(), v.end(), v.begin());
	for (int c = v.front(); c <= v.back(); ++c)
	{
		int offset = 0;
		vector<int>::iterator it = v.begin();
		for (int i = 1; i <= k; ++i)
		{
			it = lower_bound(it, v.end(), offset + c);
			if (it == v.end())
			{
				res = c;
				return;
			}
			if (*it > offset + c)
				--it;
			offset = *it;
		}
	}
}

int main()
{
	read();
	solve();
	write();
	return 0;
}