Pagini recente » Cod sursa (job #3195664) | Cod sursa (job #1711052) | Cod sursa (job #973930) | Cod sursa (job #84546) | Cod sursa (job #1287528)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int a[16010],ma,n,k,ls,ld,mid,s,p;
int check ()
{
int i;
int nrt=0,sump=0;
for (i=1;i<=n;i++)
{
if (sump+a[i]>mid) {nrt++;sump=a[i];}
else sump+=a[i];
}
nrt++;
return nrt;
}
void bsearch()
{
ls=ma;
ld=s;
while (ls<ld)
{
mid=(ls+ld)/2;
p=check();
if (p<=k) ld=mid-1;
else ls=mid+1;
}
mid=(ls+ld)/2;
p=check();
if (p<k) mid++;
g<<mid;
}
int main()
{
int i;
f>>n>>k;
for (i=1;i<=n;i++)
{
f>>a[i];
s+=a[i];
ma=max(ma,a[i]);
}
bsearch();
return 0;
}