Pagini recente » Cod sursa (job #626207) | Cod sursa (job #2257103)
#include <fstream>
#include <iostream>
using namespace std;
int v[16005],n,k;
int verif(int capac)
{ int l=0,s=0,i=1;
while(i<=n)
{
s=0;
while(s<=capac&&i<=n)
s+=v[i],i++;
if(s>capac)
s-=v[i-1],--i;
l++;
}
if(l<=k)
return -1;
return 1;
}
int binar(int x,int y)
{
int st=x,dr=y,c,t;
while(st <= dr)
{
c=(st+dr)/ 2;
if(verif(c)==-1)
{
t=c;
dr=c-1;
}
else
if(verif(c)==1)
st=c+1;
}
return t;
}
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int valmin=-1,valma=0;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>v[i];
if(v[i]>valmin)
valmin=v[i];
valma+=v[i];
}
int u=binar(valmin,valma);
cout<<u;
return 0;
}