Cod sursa(job #6068)

Utilizator webspiderDumitru Bogdan webspider Data 16 ianuarie 2007 22:37:00
Problema Transport Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>

int ms[20002];
int n,k;
int max;

int ok(int l)
{
	int i;
	int c=0,j=0;
	for ( i=1; i<=n; i++ )
	{
		c+=ms[i];
		if ( c > l ) {
			j++;
			c=ms[i];
		}
	}
	if ( c!=0 ) j++;
	if ( j <= k ) return 1;
	return 0;
}

int main()
{
	int i,j=0;
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	
	scanf("%d %d", &n, &k);
	for ( i=1; i<=n; i ++ ) {
		scanf("%d", &ms[i]);
		if (max < ms[i] ) max = ms[i];
	}
	
	for (i=1; i<=1000000000; i<<=1);
	for (;i;i>>=1)
		if ( !ok(j+i) )  j+=i;
	printf("%d\n", j+1);
	
	fclose(stdin);
	fclose(stdout);
}