Cod sursa(job #152960)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 9 martie 2008 22:30:14
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <stdio.h>
int t,nr,n,k,i,min,max,rez,u,mij,v[17000];
int main()
{
	freopen("transport.in", "r", stdin);
	freopen("transport.out", "w", stdout);
	scanf("%d %d", &n, &k);

	for(i=1;i<=n;i++)
	{
		scanf("%d",&v[i]);
   		if(v[i]>min)
		min=v[i];
		max+=v[i];
	}
	rez=min;
	u=max;
	while(rez<=u)
	{
		mij=(rez+u)/2;
		t=0; nr=0;
		for(i=1;i<=n;i++)
		{
			t+=v[i];
			if(t>mij)
			{
				t=0;
				nr++;
				i--;
			}
		}
		if(t!=0)
		{nr++; t=0;	}
		if(nr<=k)
			u=mij-1;
		else
			rez=mij+1;
	}
	printf("%d\n",rez);
return 0;
}