Cod sursa(job #2181347)

Utilizator rrobertBulgaru Robert rrobert Data 21 martie 2018 17:05:02
Problema Transport Scor 80
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 N,K,val,s=0;
int v[16005];

int valid(int x) {
	int sum=0,nr=0;

	for (int i=0;i<N;i++) {
		if (sum+v[i]>x) {
			nr++;
			sum=v[i];
		}
		else
			sum+=v[i];
	}

	nr++;
	return nr;
}

int search(int low,int high,int k) {
	while (low<=high) {
		int mid=low+(high-low)/2;

		if (valid(mid)<=k) {
			high=mid-1;
			val=mid;
		}
		else
			low=mid+1;
	}

	return val;
}

int main() {
	in>>N>>K;

	for (int i=0;i<N;i++) {
		in>>v[i];
		s+=v[i];
	}

	out<<search(0,s,K);

	in.close();
	out.close();
	return 0;
}