Pagini recente » Cod sursa (job #2415315) | Cod sursa (job #2946818) | Cod sursa (job #610712) | Cod sursa (job #1035702) | Cod sursa (job #1215986)
#include<fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int NMAX = 16010;
int n,k,a[NMAX],i,s=0,m=0;
int C(int l, int r);
bool ok(int x);
int main()
{
cin>>n>>k;
for (i=1;i<=n;i++) cin>>a[i], s+=a[i], m=max(m,a[i]);
cout<<C(m,s);
return 0;
}
bool ok(int x)
{
int i,k1=1,sum=0;
for (i=1;i<=n;i++)
{
sum+=a[i];
if (sum>x)
{
sum=a[i];
++k1;
}
}
return (k1<=k);
}
int C(int l, int r)
{
int sol;
while (l<=r)
{
int m=(l+r)/2;
if (ok(m))
{
sol=m;
r=m-1;
} else
l=m+1;
}
return sol;
}