Cod sursa(job #526783)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 29 ianuarie 2011 14:12:33
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<stdio.h>

int n,x[16001],k;
bool incape(int p)
{
	int i,c=0,nr=1;
	for(i=1;i<=n;++i)
	{
		if (x[i]>p)
			return false;
		if (c+x[i]<=p)
			c+=x[i];
		else
		{
			++nr;
			c=x[i];
		}
	}
	if (nr>k)
		return false;
	return true;
}


int caut()
{
	int i,pas=1<<30;
	for(i=0;pas!=0;pas>>=1)
		if (!incape(i+pas))
			i+=pas;
	return i+1;
}

int main()
{
	int i;
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(i=1;i<=n;++i)
		scanf("%d",&x[i]);
	printf("%d",caut());	
}