Pagini recente » Cod sursa (job #2535657) | Cod sursa (job #514244) | Cod sursa (job #236000) | Cod sursa (job #2375950) | Cod sursa (job #1263335)
#include <iostream>
#include <fstream>
#define NMAX 16000
using namespace std;
long long n, S, k, i, v[NMAX+5];
bool ok (int c)
{ long long s=0, i=0, tr=1;
for(i=1; i<=n; i++)
{
if(s+v[i]<=c)
s+=v[i];
else
if(v[i]<=c)
{
s=v[i];
tr++;
}
else
return 0;
}
if(tr<=k)
return 1;
return 0;
}
int bs (int st,int dr)
{
int med,last=-1;
while (st<=dr)
{
med=(st+dr)>>1;
if (ok(med))
last=med,dr=med-1;
else
st=med+1;
}
return last;
}
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
cin>>n>>k;
for (i=1; i<=n; i++)
cin>>v[i],S+=v[i];
cout<<bs(1,S);
return 0;
}