Pagini recente » Cod sursa (job #1780010) | Cod sursa (job #996379) | Cod sursa (job #2126561) | Cod sursa (job #815423) | Cod sursa (job #2791908)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,k;
int v[16001];
int howMany(int cap)
{
int nrt=1,s=0;
for (int i=1;i<=n;i++)
{if (s+v[i]<=cap) {s=s+v[i];}
else {nrt++;s=v[i];}}
return nrt;
}
int main()
{
int left=-1,right=0,sol=0;
fin >>n>>k;
for (int i=1;i<=n;i++)
{fin >>v[i];
right=right+v[i];
if (v[i]>left) left=v[i];}
while (left<=right)
{int mid;
mid=(left+right)/2;
if (howMany(mid)<=k) {sol=mid;
right=mid-1;}
else {left=mid+1;}}
fout <<sol;
return 0;
}