Pagini recente » Cod sursa (job #2672598) | Cod sursa (job #2287913) | Cod sursa (job #1147141) | Cod sursa (job #74031) | Cod sursa (job #1346616)
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
ofstream g("transport.out");
int N, K, a[16001], S, maxim, li, ls, m, k, i;
int main()
{
freopen("transport.in", "r", stdin);
scanf("%d %d", &N, &K);
for(i=1; i<=N; i++)
{
scanf("%d", &a[i]);
if(a[i]>maxim) maxim=a[i];
S+=a[i];
}
li=maxim;
ls=S;
while(li<=ls)
{
m=(li+ls)/2;
S=0;
k=0;
for(i=1; i<=N; i++)
{
if(S+a[i]<=m) S+=a[i];
else
{
S=a[i];
k++;
}
}
if(k>=K) li=m+1;
else ls=m-1;
}
g<<m;
return 0;
}