Pagini recente » Cod sursa (job #295739) | Cod sursa (job #1537681) | Cod sursa (job #1327243) | Cod sursa (job #3122240) | Cod sursa (job #3189380)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[100005], n, k;
int Test(int x)
{
int s = 0, cnt = 1, i;
for(i=1;i<=n;i++)
{
if (a[i] > x)return 0;
if (a[i] + s <= x)s += a[i];
else
{
cnt++;
s = a[i];
}
}
if (cnt <= k)return 1;
return 0;
}
int CB(int st, int dr)
{
int mij,p=1;
while (st <= dr)
{
mij = (st + dr) / 2;
if (Test(mij) == 1)
{
dr = mij - 1;
p = mij;
}
else st = mij + 1;
}
return p;
}
int main()
{
int i,maxim=0;
long long s=0;
fin >> n >> k;
for(i=1;i<=n;i++)
{
fin >> a[i];
if (maxim > a[i])maxim = a[i];
s += a[i];
}
fout<<CB(maxim, s);
return 0;
}