Pagini recente » Cod sursa (job #2880355) | Cod sursa (job #2950775) | Cod sursa (job #143615) | Cod sursa (job #725857) | Cod sursa (job #2892036)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,ans;
vector<int> volumes;
bool check_volume(int volume)
{
int transports = 0;
int current_volume = 0;
for(int i = 0; i < n; ++i)
if(current_volume + volumes[i] > volume)
{
++transports;
current_volume=volumes[i];
}
else
current_volume += volumes[i];
++transports;
if(transports > k)
return false;
return true;
}
void solve()
{
int mid, left, right;
left = 0;
right = 16005;
while(left < right)
{
mid = (left + right) / 2;
if(check_volume(mid) == true)
{
ans = mid;
right = mid - 1;
}
else
left = mid + 1;
}
}
int main()
{
f>>n>>k;
for(int i = 0; i < n; ++i)
{
int x;
f>>x;
volumes.push_back(x);
}
solve();
g<<ans;
return 0;
}