Pagini recente » Cod sursa (job #2042519) | Cod sursa (job #861057) | Cod sursa (job #490677) | Cod sursa (job #1839770) | Cod sursa (job #1453285)
#include <iostream>
using namespace std;
int a[16002];
int main ()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int n, k, i, j, sum=0, med=0, min=0;;
cin >> n >> k;
for (i=0; i<n; i++) cin >> a[i], sum+=a[i];
min=sum/k+1;
med=(sum+min)/2;
bool u=true;
while (u)
{
int h(0);
i=0; j=0;
while((i<k)&&(j<n)) {
if(h+a[j]>=med)
{
i++;
h=0;
}
else h+=a[j], j++;
}
if (i>=k) min++;
if (min==sum) u=false;
sum=med; med=(min+sum)/2;
if (min==sum) u=false;
}
cout << min;
return 0;
}