Cod sursa(job #1749838)

Utilizator ButmalaiDanButmalai Dan ButmalaiDan Data 28 august 2016 21:16:51
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,aux,rs = 2000000000,dr,st,a[16050],piv,aux1;
int main(){
	cin >> n >> k;
	for(int i = 0; i<n; i++){
		cin >> a[i]; 
		st = max(a[i],st);
		dr+=a[i];
	} 	
	while(st <= dr){
		piv = (st+dr)/2;
		aux = 0;
		aux1 = 1;
		for(int i = 0; i < n; i++){
			if (aux + a[i] >piv){
				aux = a[i];
				aux1++;
			}else{
				aux += a[i];
			}
		}
		if (aux1 <= k){
			rs = min (rs, piv);
			dr = piv - 1;
		}
		else st = piv + 1;
	}
	cout << rs;
}