Pagini recente » Cod sursa (job #677082) | Cod sursa (job #1599465) | Cod sursa (job #2124493) | Cod sursa (job #2740537) | Cod sursa (job #3146824)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int nmax = 16005;
int a[nmax];
int n,k;
int catedrumuri(int cap){
int nr=1, volum=0;
for(int i=1; i<=n; i++){
if(volum + a[i] <= cap){
volum += a[i];
}
else {
volum = a[i];
nr++;
}
}
return nr;
}
int main(){
f>>n>>k;
for(int i=1; i<=n; i++){
f>>a[i];
}
int mid;
int left = 1, right = 16000*16000;
int sol=0;
while(left<=right){
mid = (left+right)/2;
if(catedrumuri(mid) <= k) {
sol = mid;
right = mid - 1;
}
else {
left = mid + 1;
}
}
g<<sol<<'\n';
}