Cod sursa(job #1741693)

Utilizator Bulgaru_Robert_Razvan_323CBBulgaru Robert Razvan Bulgaru_Robert_Razvan_323CB Data 14 august 2016 19:14:53
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <fstream>

using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");

int v[16001];
int N,K;

int valid(int c) {
	int nr=0,s=0;
	for (int i=1;i<=N;i++) {
		if (v[i]>c) {
			return 0;
		}

		s+=v[i];
		if (s>c) {
			nr++;
			s=v[i];
		}
	}

	if (s>0) {
		nr++;
	}

	return nr<=K;
}

int search(int c) {
	int mid,lo=1,hi=c,last=c+1;

	while (lo<=hi) {
		mid=lo+(hi-lo)/2;

		if (valid(mid)) {
			last=mid;
			hi=mid-1;
		}
		else {
			lo=mid+1;
		}
	}

	return last;
}

int main() {
	int C,S=0;
	in>>N>>K;
	for (int i=1;i<=N;i++) {
		in>>v[i];
		S+=v[i];
	}

	out<<search(S);
	return 0;
}