Pagini recente » Cod sursa (job #2369689) | Cod sursa (job #320597) | Cod sursa (job #1959392) | Cod sursa (job #1341137) | Cod sursa (job #2749715)
#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;
for(int i=0;i<n;i++)
{
cin>>v[i];
up+=v[i];
}
int low=up/k;
int mn=INT_MAX;
int next=(up+low)/2;
while(next!=low)
{
if(check(next))
{
mn=mn>next?next:mn;
up=next;
}
else low=next;
next=(up+low)/2;
//cout<<up<<' '<<low<<' '<<next<<'\n';
}
cout<<mn;
return 0;
}