Pagini recente » Cod sursa (job #2312904) | Cod sursa (job #3168074) | Cod sursa (job #3280787) | Cod sursa (job #3158752) | Cod sursa (job #2928291)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n[16001],nr,k;
int check(int n);
int main()
{
int i,ss=0,max=0;
fin>>nr>>k;
for(i=1;i<=nr;i++)
{
fin>>n[i];
ss+=n[i];
if(max<n[i])
{
max=n[i];
}
}
int l=max,r=ss,mid,sol=-1;
while(l<=r)
{
mid=(l+r)/2;
//cout<<l<<" "<<mid<<" "<<r<<"\n";
if(check(mid))
{
sol=mid;
r=mid-1;
}
else
{
l=mid+1;
}
}
fout<<sol;
return 0;
}
int check(int mid)
{
//cout<<"\n";
int s=0,dru=0,i;
for(i=1;i<=nr;i++)
{
if(s+n[i]<=mid)
{
s+=n[i];
//cout<<i<<":"<<n[i]<<" "<<s<<" ";
}
else
{
s=0;
i--;
dru++;
}
}
if(s)
{
dru++;
}
return (dru<=k);
}