Cod sursa(job #354778)

Utilizator ioraIoana Radu iora Data 9 octombrie 2009 13:22:40
Problema Transport Scor 60
Compilator cpp Status done
Runda cautb1 Marime 0.57 kb
#include<cstdio>
#define N (1<<14)
int n,a[N];
int cat(int k)
{
	int i,nr=0,s=0;
	if(a[1]>k) return 0;
	else nr=1;
	for(i=1;i<=n;++i)
	{
		if(a[i]>k) return 0;
		if(s+a[i]>k)
		{
			s=a[i];
			nr++;
		}else s+=a[i];
	}
	return nr;
}		
int cb(int p)
{
	int i,pas=(1<<28);
	
	for(i=0;pas;pas>>=1)
		if(cat(i+pas)>p)
			i+=pas;
	return i+1;
}

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