Pagini recente » Cod sursa (job #2347605) | Cod sursa (job #803981) | Cod sursa (job #623352) | Cod sursa (job #1021017) | Cod sursa (job #2563012)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,s[16001],st,dr;
bool ok(int x)
{ int g=0,t=0;
for(int i=1;i<=n;i++)
if(g+s[i]>x)
t++,g=s[i];
else
g+=s[i];
if(g>0)
t++;
return t<=k;
}
int main()
{ in>>n>>k;
for(int i=1;i<=n;i++)
in>>s[i],st=max(st,s[i]),dr+=s[i];
while(st<=dr)
{ int mij=(st+dr)/2;
if(ok(mij))
dr=mij-1;
else
st=mij+1;
}
out<<st<<'\n';
in.close();
out.close();
return 0;
}