Pagini recente » Cod sursa (job #2794683) | Cod sursa (job #510625) | Cod sursa (job #2839132) | Cod sursa (job #1257603) | Cod sursa (job #2749712)
#include <iostream>
#include <fstream>
#define cin inn
#define cout outt
#define INT_MAX 160001
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,v[16001];
bool check(int nr)
{
int cmp=1,c=0;
for(int i=0;i<=n;i++)
{
if(v[i]>nr) return 0;
if(c+v[i]>nr)
{
cmp++;
c=0;
}
if(i!=n) c+=v[i];
}
return cmp<=k;
}
int main()
{
cin>>n>>k;
int up=0,mx=0;
for(int i=0;i<n;i++)
{
cin>>v[i];
up+=v[i];
if(v[i]>mx) mx=v[i];
}
int low=up/k;
int mn=INT_MAX;
int next=(up-low)/2+low;
int div=(up-low)/2+div%2;
while(div>0)
{
div=div/2;
//cout<<next<<' '<<div<<' '<<low<<' '<<up<<'\n';
bool flag=check(next);
if(flag)
{
mn=mn>next?next:mn;
next-=div;
}
else next+=div;
}
cout<<mn;
return 0;
}