Pagini recente » Cod sursa (job #2444721) | Cod sursa (job #2134593) | Cod sursa (job #1477839) | Cod sursa (job #1913247) | Cod sursa (job #1523796)
#include <fstream>
using namespace std;
const int NMax = 16010;
int a[NMax];
int N, K;
bool OK(const int C)
{
int sum = 0;
int cnt = 0;
for (int i = 1; i <= N; ++ i)
{
if (sum + a[i] <= C)
{
sum += a[i];
}
else
{
++cnt;
sum=a[i];
}
}
++cnt;
return (cnt <= K);
}
int main()
{
ifstream f("transport.in");
f >> N >> K;
int st = 0, dr = 0;
for (int i = 1; i <= N; ++ i)
{
f >> a[i];
dr += a[i];
st = max(st, a[i]);
}
f.close();
int ans ;
while(st<=dr)
{
int mij = (st+dr) / 2;
if (OK(mij))
{
ans = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
ofstream g ("transport.out");
g << ans << "\n";
g.close();
return 0;
}