Cod sursa(job #1052912)

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

int a[1601], 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 = 1; i <= n; i++)
	{
		fin >> a[i];
		
		suma += a[i];
	}

	fout << bynar(1, suma);

	


}