Pagini recente » Cod sursa (job #266564) | Cod sursa (job #1537533) | Cod sursa (job #446585) | Istoria paginii utilizator/olimpicozaurii_tm | Cod sursa (job #2242783)
#include <fstream>
using namespace std;
int v[16001],k,n;
int bs(int l);
bool f(int x);
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
cin>>n>>k;
for(int i=0;i<n;i++)
cin>>v[i];
cout<<bs(1600*1600);
return 0;
}
int bs(int r)
{
int l=0,mid;
while(l<r)
{
mid=(l+r)/2;
if(f(mid)==true)
r=mid;
else
l=mid+1;
}
return l;
}
bool f(int x)
{
int transport=1,suma=0;
for(int i=0; i<n ;i++)
{
suma+=v[i];
if(suma>x)
{
transport++;
suma=v[i];
}
}
if(transport<=k)
return true;
return false;
}