Pagini recente » Cod sursa (job #1673406) | Cod sursa (job #500703) | Cod sursa (job #969926) | Cod sursa (job #2493738) | Cod sursa (job #1678215)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,i,a[16003],st,mi=2000000000,s,d,m,f,bst;
int ok(int c)
{
int i,s=0,k=0;
s=a[1];
k=1;
if(c<a[1])return 0;
for(i=2;i<=n;i++)
{
if(a[i]>c)return 0;
if(s+a[i]>c)
{
k++;
s=a[i];
}
else s+=a[i];
}
return k;
}
int main()
{
fin>>n>>k;
for(i=1;i<=n;i++)
{
fin>>a[i];
st+=a[i];
if(mi>a[i])mi=a[i];
}
s=mi;
d=st;
while(s<=d)
{
m=(s+d)/2;
f=ok(m);
if(f==0)s=m+1;
else
if(f<=k)d=m-1,bst=m;
else s=m+1;
}
fout<<bst<<"\n";
return 0;
}