Cod sursa(job #946671)

Utilizator robert_stefanRobert Stefan robert_stefan Data 5 mai 2013 15:36:58
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>

using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");

const int MAX=16000;

int N,K,v[MAX],ma,s,mijl,sol;

bool verifica (int mijl);

int main()
{
	int i;
	in>>N>>K;
	for(i=0;i<N;i++)
	{
		in>>v[i];
		if(ma<v[i])
			ma=v[i];
		s+=v[i];
	}
	while(ma<=s)
	{
		mijl=(ma+s)/2;
		if(!(verifica(mijl)))
			ma=mijl+1;
		else s=mijl-1, sol=mijl;
	}
	out<<sol<<'\n';
	in.close();
	out.close();
	return 0;
}

bool verifica(int mijl)
{
	int i=0, j=0, var;
	while(i<=K&&j<N)
	{
		var=0;
		while(var+v[j]<=mijl)
			var+=v[j], j++;
		i++;
	}
	if(i<=K)
		return 1;
	return 0;
}