Cod sursa(job #1019686)

Utilizator leontinLeontin leontin Data 31 octombrie 2013 19:41:14
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
long n,k,v[1000];
bool exista(long capacitate)
{
	long i,nr=0,acum=0;
	for(i=1;i<=n;i++)
	{
		if(capacitate-acum>=v[i])
		
			acum=acum+v[i];
		else
		{
			acum=0;
			i--;
			nr++;
		}
	}
		if(nr<=k)
			return true;
		return false;
	}


long search(long st,long dr)
{
	if(st>dr)
		return st;
	long piv=(st+dr)/2;
	if(exista(v[piv])==true)
		return search( st,piv-1);
		else
			return search(piv+1,dr);
}
int main()
{
	f>>n>>k;
	long i,max,sum=0;
	for(i=1;i<=n;i++)
	{
		f>>v[i];
		sum=sum+v[i];
	}
	max=sum;
	sum=sum/3;
	g<<search(sum,max);
	return 0;
}