Cod sursa(job #1880559)

Utilizator igroitaGroita Igor igroita Data 15 februarie 2017 20:24:24
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>

using namespace std;

ifstream cin("transport.in");
ofstream cout("transport.out");
int n, k;
long long cmax = 256000000LL, v[16005];
bool check(long long rs){
	long long sum=0;
	int trans=1;
	for(int i=1; i<=n && trans<=k+1; ++i){
			if(rs-sum>=v[i]){ sum+=v[i]; }
		else{ ++trans; sum = v[i];}
	}
	if(trans>k) return 0;
	return 1;
}

long long caut(long long inc, long long sf){
	long long mid = (inc + sf) / 2;
	if(sf<=inc) return mid; 
	if(check(mid)){
		caut(inc, mid);}
	else caut(mid+1,sf);
}

int main(){
	cin>>n>>k;
	for(int i=1; i<=n; ++i) cin>>v[i];
//	cout<<'\n';
//	for(int i=1; i<=n; ++i) cout<<v[i]<<"   ";
	
	cout<<caut(0, cmax);
	
	
	
		
	return 0;
}