Cod sursa(job #1470933)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 12 august 2015 17:37:32
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

int n, v[16000], k;

int vezi(int x) {
	int i, j, s, t;
	i = t = 0;
	j = 1;
	s = v[i];

	while (t <= k && j < n) {
		s += v[j];
		if (s > x){
			s = v[j];
			t++;
		}
			j++;
	}
	if (s < x) t++;

	if (t>k)
		return 1;
	else
		return 0;
}

int main(){
	ifstream f("transport.in");
	ofstream g("transport.out");

	int i, lo = 0, hi = 0, mid, x;

	f >> n >> k;
	for (i = 0; i < n; ++i) {
		f >> v[i];
		lo = max(lo, v[i]);
		hi += v[i];
	}

	while (hi - lo > 1){
		mid = (lo + hi) / 2;
		x = vezi(mid);
		if (x)
			lo = mid;
		else
			hi = mid;
	}

	if (vezi(lo) == 0)
		g << lo;
	else
		g << hi;

	//cin.get();
	f.close();
	g.close();
	return 0;
}