Pagini recente » Cod sursa (job #2298293) | Cod sursa (job #496572) | Cod sursa (job #192824) | Cod sursa (job #240012) | Cod sursa (job #1732062)
#include <iostream>
using namespace std;
int v[16001], N, k, x;
int corect(int cap)
{
int sum=0, tran=0;
for(int i=1; i<=N; i++)
{
sum+=v[i];
if(sum>cap)
{
tran++;
sum=v[i];
}
}
if(tran<k && cap>=sum)
return 1;
return 0;
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
cin>>N>>k;
int MAX=0, s=0, sol;
for(int i=1;i<=N;i++)
{
cin>>x;
v[i]=x;
if(MAX<x)
MAX=x;
s+=x;
}
int ls=MAX, ld=s;
/*for (int i = ls; i <= ld; i++) {
if (corect(i)) {
sol = i;
break;
}
}*/ //solutia greoaie
while(ls<=ld)
{
int mid=(ls+ld)/2;
if(corect(mid))
{
ld=mid-1;
sol=mid;
} else {
ls=mid+1;
}
}
cout<<sol;
return 0;
}