Pagini recente » Cod sursa (job #1434303) | Cod sursa (job #148154) | Cod sursa (job #1827079) | Cod sursa (job #1598880) | Cod sursa (job #1523794)
#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 sum_total = 0;
for (int i = 1; i <= N; ++ i)
{
f >> a[i];
sum_total += a[i];
}
f.close();
int st = 1, dr = sum_total;
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;
}