Cod sursa(job #46826)

Utilizator marius135Dumitran Adrian Marius marius135 Data 3 aprilie 2007 00:18:51
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<stdio.h>


long n,k,v[16*1024];

long ver(long a)
{
	long i,p=k,s=a;
	for(i=1;i<=n && p;i++)
		if(v[i]<=s) s-=v[i];
		else {p--;s=a;i--;}
	if(i==n+1) return 1;
		
	return 0;
		
}

long cauta(long a,long b)
{
	long c;
	if(a==b) return a;
	c = (a+b)/2;
	if(ver(c)) return cauta(a,c);
	else return cauta(c+1,b);
	
}

int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	long i;
	scanf("%ld%ld",&n,&k);
	for(i=1;i<=n;i++)
		scanf("%ld",&v[i]);
	
	printf("%ld",cauta(1,16000*16000));
		
		

return 0;
}