Cod sursa(job #788438)

Utilizator dogDaysAreOverAndreea Gheorghe dogDaysAreOver Data 14 septembrie 2012 22:48:24
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

#define inputFile "transport.in"
#define outputFile "transport.out"
#define MAX 16000

using namespace std;

int n, k, totalSum;
int vols[MAX];

bool possible(int pos){
	int i=-1, s=0, nr=0;

	while(nr <= k && i+1<n ){
		s = 0;

		while(s+vols[i+1] <= pos && i+1<n){
			i++;
			s+= vols[i+1];
		}
		nr++;
	}

	if(nr <= k)
		return true;

	return false;
}


int main(){
	ifstream in(inputFile);
	in>>n>>k;

	for(int i=0; i<n; i++){
		in>>vols[i];
		totalSum += vols[i];
	}

	int start = 0;

	while(start <= totalSum){
		int mid = (start + totalSum)/2;
		if(possible(mid))
			totalSum = mid-1;
		else
			start = mid + 1;
	}

	ofstream output;
	output.open(outputFile);

	output << start << endl;
	output.close();
}