Cod sursa(job #948555)

Utilizator OpportunityVlad Negura Opportunity Data 10 mai 2013 23:26:55
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream fi("transport.in");
ofstream fo("transport.out");
#define NMAX 16001

int n,k,c,i,a[NMAX],aux;


int check(int cap){
	
	int v=0,nr=0;
	for (i=1; i<=n; i++){
		if (a[i]>cap) return 0;
		if (v+a[i]<=cap) v+=a[i]; else nr++,v=a[i];
	}
	if (nr<k) return 1; else return 0;
}

int main(){
	
	fi >> n >> k;
	for (i=1; i<=n; i++) fi >> a[i];
	
	while (!(check(c+1) && !check(c))){ 
		aux=1;
		while (!check(c+aux)) aux*=2;
		c+=aux/2;
	}

	fo << (c+1);
	
	return 0;
}