Cod sursa(job #492175)

Utilizator cristian9Cristian Zloteanu cristian9 Data 13 octombrie 2010 17:55:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>

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

	int n, k, i, v[16001], min=0, max, c, t, ct, sol;

	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];
	}

	while(min<=max){

		c=(min+max)/2;
		t=0;

		for(i=1; i<=n; i){
		    ct=c;
			t++;
			while(i<=n && v[i]<=ct){
				ct-=v[i];
				i++;
			}
		}

		if(t<=k){
			max=c-1;
			sol=c;
		}
		else
			min=c+1;
	}

	printf("%d ", sol);
	return 0;
}