Cod sursa(job #780866)

Utilizator stef1995mmarcu stefan ovidiu stef1995m Data 22 august 2012 15:13:53
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<iostream>
#include<fstream>
using namespace std;
int n,k,i,x[16005],sp,mij,s,nrpasi;
int posibil(int suma)
{
	i=1;
	nrpasi=0;
	while(i<=n)
	{
		sp=0;
		while(sp+x[i]<=suma&&i<=n)
		{
			sp+=x[i];
			i++;
		}
		if(sp==0)
			i=n+5;
		else
			nrpasi++;
	}
	if(i==n+5||nrpasi>k)
		return 0;
	return 1;
}
void cautare(int inc,int sf)
{
	if(inc<=sf)
	{
		mij=sf+inc;
		mij=mij/2;
		if(posibil(mij)==1)
			cautare(inc,mij-1);
		else
			cautare(mij+1,sf);
	}
	else
		printf("%d",inc);
}
int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d %d\n",&n,&k);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&x[i]);
		s+=x[i];
	}
	cautare(1,s);
	return 0;
}