Pagini recente » Cod sursa (job #742594) | Cod sursa (job #44236) | Cod sursa (job #1090737) | Cod sursa (job #2419990) | Cod sursa (job #2930434)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("transport.in");
ofstream out("transport.out");
#define maxN 16000
int v[maxN+1];
int main(){
int n,k,maxi=-1;
long long sum=0;
in>>n>>k;
for(int i=1;i<=n;i++){
in>>v[i];
sum+=v[i];
if(v[i]>maxi){
maxi=v[i];
}
}
int st=maxi,dr=sum,sol=-1;
while(st<=dr){
int mij=(st+dr)/2;
int tr=1,l=0;
for(int i=1;i<=n;i++){
if(l+v[i]<=mij){
l+=v[i];
}
else{
tr++;
l=v[i];
}
}
if(tr>k){
st=mij+1;
}
else{
sol=mij;
dr=mij-1;
}
}
out<<sol;
}