Pagini recente » Cod sursa (job #1883124) | Cod sursa (job #1697316) | Cod sursa (job #2675302)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int a[16005];
int n , k;
int find_k(int r)
{
int kk = 1;
int s = 0;
for (int i=0;i<n;i++)
{
if (a[i] > r)
return k+1;
if (s + a[i] > r)
{
s = a[i];
kk++;
}
else
s += a[i];
}
return kk;
}
int find_r(int p1 , int p2)
{
if (p2 - p1 == 1)
{
if (find_k(p1) == k)
return p1;
return p2;
}
if (p1 == p2)
return p1;
int m = (p1 + p2) / 2;
if (find_k(m) <= k)
p2 = m;
else
p1 = m;
find_r(p1 , p2);
}
int main()
{
fin >> n >> k;
fin >> a[0];
int ma_x = a[0];
for (int i=1;i<n;i++)
{
fin >> a[i];
if (a[i] > ma_x)
ma_x = a[i];
}
fout << find_r(ma_x , ma_x * k);
return 0;
}