Pagini recente » Cod sursa (job #1435168) | Cod sursa (job #1672953) | Cod sursa (job #2598914) | Cod sursa (job #1605856) | Cod sursa (job #1768153)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f ("transport.in");
ofstream t ("transport.out");
int n,k;
vector <int> v;
bool verify(int64_t capacitate){
int_fast32_t c=1,s=0;
for (int i=0;i<n;++i){
if (v[i]>capacitate) return false;
if (s+v[i]<=capacitate)
s+=v[i];
else{
s=v[i];++c;
if (c>k) return false;
}}
return true;}
int64_t caut_bin(int64_t low,int64_t up)
{
int64_t st=low,dr=up;
while(st<=dr)
{
int64_t mid=(st+dr)/2;
if(!verify(mid)) st=mid+1;
else dr=mid-1;
}
return st;
}
int main()
{
f>>n>>k;
v.resize(n);
for (int i=0;i<n;++i)
f>>v[i];
t<<caut_bin(0,2147483647);
return 0;
}