Pagini recente » Cod sursa (job #2532758) | Cod sursa (job #1133865) | Cod sursa (job #1545532) | Cod sursa (job #137860) | Cod sursa (job #2223079)
#include <fstream>
#define NMAX 16001
using namespace std;
int A[NMAX],n,k,C,s,maxim;
ifstream in("transport.in");
ofstream out("transport.out");
int CalcTransport(int ip)
{
int trans,i,cap;
i=1;
cap=trans=0;
while(i<=n)
{
if(cap+A[i]<=ip)
{
cap+=A[i];
i++;
}
else
{
trans++;
cap=0;
}
}
return trans+1;
}
int CautBinar()
{
int p,u,m,rez;
p=maxim;
u=s;
while(p<=u)
{
m=p+(u-p)/2;
if(CalcTransport(m)<=k)
{
rez=m;
u=m-1;
}
else
p=m+1;
}
return rez;
}
void Citire()
{
in>>n>>k;
for(int i=1; i<=n; i++)
{
in>>A[i];
if(A[i]>maxim)
maxim=A[i];
s+=A[i];
}
}
int main()
{
Citire();
out<<CautBinar();
return 0;
}