Pagini recente » Cod sursa (job #3159587) | Cod sursa (job #2118132) | Cod sursa (job #601279) | Cod sursa (job #2424204) | Cod sursa (job #640481)
Cod sursa(job #640481)
#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,max=0;
for (int i=0; i<n; i++){
s+=a[i];
if (a[i]>max) max=a[i];
}
int l=max, r=s, t;
while (l<r)
{
t=(l+r)/2;
if (numar(t)<=k) r=t; else l=t+1;
}
return l;
}
int main()
{
f >> n >> k;
for (int i=0; i<n; i++)
f >> a[i];
g << capacitatea();
}