Pagini recente » Cod sursa (job #416805) | Cod sursa (job #2629779) | Cod sursa (job #2850113) | Cod sursa (job #1572737) | Cod sursa (job #3030838)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16005];
int n,k,st,dr;
int f(int b)
{
int poz=1,s=0;
for(int j=0; j<n; j++)
{
if(s+v[j]<=b)
s+=v[j];
else
{
s=v[j];
poz++;
}
}
if(poz<=k)
return 1;
else
return 0;
}
int main()
{
cin>>n>>k;
for(int i=0; i<n; i++)
cin>>v[i];
st=1,dr=16000;
int ok=0;
while(st<=dr)
{
/// cout<<st<<" "<<dr<<'\n';
if(f(dr)==1 && f(dr-1)==0)
{
ok=1;
cout<<dr;
break;
}
else if(f(dr)==1 && f(dr-1)==1 && f((dr+st)/2)==0)
st=(st+dr)/2;
else if(f(dr)==1 && f(dr-1)==1 && f((dr+st)/2)==1)
dr=(st+dr)/2;
}
if(ok==0)
cout<<dr;
return 0;
}