Pagini recente » Cod sursa (job #2253740) | Cod sursa (job #1907112) | Cod sursa (job #1383650) | Cod sursa (job #2389788) | Cod sursa (job #2181350)
#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(1,s,K);
in.close();
out.close();
return 0;
}