Cod sursa(job #1009133)

Utilizator killer301Ioan Andrei Nicolae killer301 Data 12 octombrie 2013 15:30:56
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <cstdio>

using namespace std;

int n, k;
int a[16010];
int verif(int x)
{
	int nr=0, s=0, i;
	for(i=0;i<n;i++)
	{
		if(a[i]>x)
			return 0;
		if(s+a[i]>x)
		{
			nr++;
			s=a[i];
		}
		else s+=a[i];
	}
	if(nr+1>k)
		return 0;
	else return 1;
}

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