Cod sursa(job #1470893)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 12 august 2015 16:44:49
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#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 = 0;
			i++;
			j = i + 1;
			t++;
		}
		else 
			j++;
	}
	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];
		if (lo < v[i])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;

	f.close();
	g.close();
	return 0;
}