Cod sursa(job #482321)

Utilizator popa.andreeaPopa Andreea Maria popa.andreea Data 3 septembrie 2010 08:38:43
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
# include <stdio.h>
# define nmax 16001
int a[16001];
long i,st,dr,last,med,n,k,x;

int numar_trans(int val)
{
	int t=0;
	int lim=val+1;
	for (int j=1;j<=n;j++)
		if (a[j]>val) return 0;
			else
				if (lim+a[j]<=val) 
					lim=a[j]+lim;
				else
				{
					lim=a[j];
					t++;
				}
	return t;
}

int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%ld%ld",&n,&k);
	for (i=1;i<=n;i++)
		scanf("%d",&a[i]);
	st=1;
	dr=nmax*nmax;
	last=0;
	while (st<=dr)
	{
		med=(st+dr)>>1;
		x=numar_trans(med);
		if (x<=k)
		{
			if (x!=0) last=med;
			dr=med-1;
		}
		else st=med+1;
	}
	printf("%ld",last);
}