Pagini recente » Cod sursa (job #766377) | Cod sursa (job #963448) | Cod sursa (job #2487203) | Cod sursa (job #2656670) | Cod sursa (job #2894129)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int foo(vector<int> &vals, int xv ){
int k = 1;
int rest = 0;
for(int x:vals){
if(x > xv) return -1;
if(rest + x > xv){
k++;
rest = x;
}
else
rest += x;
}
return k;
}
int main()
{
int n,k;
fin>>n>>k;
vector<int> vals(n);
for(int i = 0; i < n; i++)
{
fin>> vals[i];
}
int nrb = 20;
int xv = 0;
for(int i = nrb; i >= 0; i--){
xv += (1<<i);
int r = foo(vals, xv);
if(r == -1)
continue;
int rp = foo(vals, xv-1);
if(r <= k && (rp > k || rp == -1))
break;
if(r < k || (k == r && k == rp))
xv -= (1<<i);
}
fout << xv;
return 0;
}