Pagini recente » Cod sursa (job #1657456) | Cod sursa (job #1753991) | Cod sursa (job #3191032) | Cod sursa (job #1735036) | Cod sursa (job #1250545)
#include <fstream>
#define maxn 16300
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,k,v[maxn],lo,hi;
bool check (int x)
{
int cnt = 1,s = 0;
for (int i=1; i<=n; ++i)
{
if (s + v[i] > x)
{
s = 0;
++cnt;
}
s += v[i];
}
if (cnt <= k)
return 1;
return 0;
}
int main()
{
fin>>n>>k;
int lo = 0, hi = 0;
for (int i=1; i<=n; ++i)
{
fin>>v[i];
hi += v[i];
lo = max (lo,v[i]);
}
++hi;
--lo;
while (hi - lo > 1)
{
int mid = (lo + hi)/2;
if (check (mid))
hi = mid;
else lo = mid;
}
fout<<hi;
}