Pagini recente » Cod sursa (job #2481605) | Cod sursa (job #1375723) | Cod sursa (job #3274522) | Cod sursa (job #909251) | Cod sursa (job #2546280)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int sal[16001],n,k;
bool transport(int x)
{
int i,scrt=0,c=k;
for(i=1;i<=n;i++)
{
if(scrt+sal[i]<=x)
{
scrt+=sal[i];
}
else
{
scrt=sal[i];
c--;
if(c<0)
return 0;
}
}
if(c-1<0)
return 0;
else
return 1;
}
int cautb(int st,int dr)
{
int mij,r=0;
while(st<=dr)
{
mij=(st+dr)/2;
if(transport(mij))
{
r=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
return r;
}
int main()
{
int i,maxim=0,s=0;
in>>n>>k;
for(i=1;i<=n;i++)
{
in>>sal[i];
maxim=max(maxim,sal[i]);
s+=sal[i];
}
i=cautb(maxim,s);
out<<i;
return 0;
}