Pagini recente » Cod sursa (job #2660305) | Cod sursa (job #843522) | Cod sursa (job #3131727) | Cod sursa (job #87432) | Cod sursa (job #2853754)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16001];
int main()
{
int n, k, st, dr, sol=-1, mij;
long long t=0;
cin>>n>>k;
for(int i=1; i<=n; i++)
{
cin>>v[i];
t+=v[i];
}
st=t/k;
if(st*k<t)
st++;
dr=n*t/k;
while(st<=dr)
{
bool ok=false;
mij=(st+dr)/2;
int c=0, ck=k;
for(int i=n; i>0; i--)
{
c+=v[i];
if(c>mij)
{
ck--;
c=v[i];
}
if(!ck)
{
ok=true;
break;
}
}
if(ok)
st=mij+1;
else
{
sol=mij;
dr=mij-1;
}
}
cout<<sol;
return 0;
}