Pagini recente » Cod sursa (job #1666912) | Cod sursa (job #922451) | Cod sursa (job #583986) | Cod sursa (job #2650416) | Cod sursa (job #1037635)
#include<fstream>
using namespace std;
int v[16001],k,n;
int binara(int stg, int dr)
{
int m=(stg+dr)/2,s=0,i,k2=0;
for(i=1;i<=n;i++)
{while(s+v[i]<m){s=s+v[i];i++;}
k2++;s=v[i];}
if(k2>k)return binara(m,dr);
else if(k2<k)return binara(stg,m);
else {while(k2==k)
{k=0;m--;s=0;
for(i=1;i<=n;i++)
{while(s+v[i]<m){s=s+v[i];i++;}
k2++;s=v[i];}
}
return m+1;}
}
int main()
{
ifstream fcin("transport.in");
ofstream fcout("transport.out");
int i;
fcin>>n>>k;
for(i=1;i<=n;i++)
{fcin>>v[i];v[0]=v[0]+v[i];}
fcout<<binara(1,v[0])<<'\n';
return 0;
}