Pagini recente » Cod sursa (job #57076) | Cod sursa (job #1747532) | Cod sursa (job #1830589) | Cod sursa (job #2109397) | Cod sursa (job #3146827)
#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;
int maxim = -1;
for(int i=1; i<=n; i++){
f>>a[i];
maxim = max(maxim, a[i]);
}
int mid;
int left = maxim, 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';
}