Cod sursa(job #2616451)

Utilizator Gliumarin negai Gliu Data 18 mai 2020 16:20:43
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n,k,v[16009],ans,ma,sum;

int main(){
in >>n>>k;
for(int i=0;i<n;i++){
	in >>v[i];
	sum+=v[i];
	if(v[i]>ma){
		ma=v[i];
	}
}
int dr,st,mid,pm=25000000;

st=ma, dr=sum;
while(st<=dr){
	mid =(st+dr)/2;
long long s=0,tr=0;
for(int i=0;i<n;i++){
	s+=v[i];
	if(s>mid){
		tr++;
		s=v[i];
	}
}
if(s!=0){
	tr++;
}
if(tr<=k){
	if(mid<pm){
		pm=mid;
	}
	dr=mid-1;
}else st=mid+1;
}
out <<pm;
return 0;
}