Cod sursa(job #1052908)

Utilizator thehuntestshadowDragomir Alexandru thehuntestshadow Data 11 decembrie 2013 21:40:08
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<iostream>
#include<fstream>
using namespace std;

int a[1600], k, n;


int correct(int x)
{
	int i = 1, j = 1, d = x;
	while (j <= n && x >= a[j])
	{
		d -= a[j];
		if (d < 0){ d = x; i++; }
		else j++;
	}

	if (x < a[j] && j < n) return k + 1;
	return i;



}


int  bynar(int l, int r)

{
	int m, c, d;

	while (l != r)

	{
		m = (l + r) / 2;
		c = correct(m);
		if (c == k) d = m;
		if (c <= k) r = m;
		else { l = m + 1; }

	}
	c = correct(m);
	if (c) return l;
	return d;


}


int main()
{
	ifstream fin("transport.in");
	ofstream fout("transport.out");

	fin >> n >> k;

	int suma = 0;
	for (int i = 0; i < n; ++i)
	{
		fin >> a[i];
	}

	fout << bynar(0, suma);
	system("pause");

	


}