Pagini recente » Cod sursa (job #373459) | Cod sursa (job #1336968) | Cod sursa (job #2222352) | Cod sursa (job #678847) | Cod sursa (job #2502685)
//#include <iostream>
#include <fstream>
using namespace std;
int a[16001],n,k,mij,p=0;
ifstream cin("transport.in");
ofstream cout("transport.out");
int verif(int y)
{
int tr,drum,i;
tr=0;
drum=1;
for(i=0; i<=n&&drum<=k; i++)
{
tr=tr+a[i];
if(tr>y)
{
tr=a[i];
drum++;
}
}
if(drum<=k) return 1;
else return 0;
}
void caut_bin(int st, int dr)
{
while(st <= dr)
{
mij = (st+dr)/2;
if(verif(mij)==1)
{
p=mij;
dr = mij -1;
}
else
{
st = mij+1;
}
}
}
int main()
{
int mx=0,s=0,sum=0,lim,i,nr,maxi=0;
cin>>n>>k;
for(i=1; i<=n; i++)
{
cin>>a[i];
s=s+a[i];
if(a[i]>mx)
mx=a[i];
}
caut_bin(0,s);
cout<<p;
/*nr=s/k;
if(nr>mx)
lim=nr;
else lim=mx;
i=1;
while(tr<=k)
{
sum=0;
while(i<=n &&sum<lim)
{
sum=a[i]+sum;
i++;
}
if(sum>maxi)
maxi=sum;
tr++;
// cout<<sum<<'\n';
}
//cout<<maxi;*/
return 0;
}