Cod sursa(job #429735)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 30 martie 2010 13:42:36
Problema Transport Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>

int a[16001],k,n;

int sePoateTransporta (int x)
{
	int transp=0,sum=99999,i;
	for (i=1; i<=n; i++)
	{
		if (sum+a[i]>x && a[i]<=x) 
		{
			transp++;
			sum=a[i];
		}
		else if (sum+a[i]<=x) sum+=a[i];
		if (a[i]>x) return 0;
		if (transp>k) return 0;
	}
	return 1;
}

int main ()
{
	int i,m,st,dr,s=0;
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d%d",&n,&k);
	for (i=1; i<=n; i++)
	{
		scanf("%d",&a[i]);
		s+=a[i];
	}
	st=1; dr=s;
	while (st<=dr)
	{
		m=(st+dr)/2;
		if (sePoateTransporta(m))
			dr=m-1;
		else st=m+1;
	}
	printf("%d",m);
	return 0;
}