Cod sursa(job #100867)

Utilizator savimSerban Andrei Stan savim Data 12 noiembrie 2007 20:00:36
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
int main()
{
	long nr,p,j,s,sum,k,t,i,n;
	long a[16000];

	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);

	scanf("%ld%ld",&n,&k);
	j=0;s=0;
    for (i=1; i<=n; i++)
	{
			scanf("%ld",&a[i]);
			s=s+a[i];
			if (a[i]>j) j=a[i];
	}
	
    t=0;
	while (j+1<s)
	{
          p=(j+s)/2;nr=0;
          i=0;sum=0;
          while (i<=n)
          {
                
                i++;
                if (sum+a[i]<=p) sum=sum+a[i];
                else {
                                sum=0;    
                                nr++;
                     }
          }
          if (nr<=k)     
          {
             t=p;
             s=p;               
          }
          else j=nr;
    }
	printf("%ld\n",t);
    return 0;
}