Pagini recente » Cod sursa (job #2372227) | Cod sursa (job #2418231) | Cod sursa (job #1419678) | Cod sursa (job #2132213) | Cod sursa (job #639857)
Cod sursa(job #639857)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,a[20000];
int numar(int t)
{
int s=0,i,nr=1;
for (i=0; i<n; i++)
if (s+a[i]>t)
{
s=a[i];
nr++;
} else s+=a[i];
return nr;
}
int capacitatea()
{
int s=0,i;
for (i=0; i<n; i++)
s+=a[i];
int l=0, r=s, t, nr;
while (l<r)
{
t=(l+r)/2;
nr = numar(t);
if (nr==k) r=l=t; else if (nr<k) r=t; else l=t+1;
}
return r;
}
int main()
{
f >> n >> k;
for (int i=0; i<n; i++)
f >> a[i];
g << capacitatea();
}