Pagini recente » Cod sursa (job #1795407) | Cod sursa (job #2961901) | Cod sursa (job #216559) | Cod sursa (job #2031532) | Cod sursa (job #2553108)
#include <iostream>
#include <set>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int N,v[16005],K,low,high,mid,ans=INT_MAX;
bool F(int Cap)
{
int CapTrans=0,NumbTrans=0;
for(int i=1;i<=N+1;i++)
{
if(CapTrans+v[i]>Cap)
{
CapTrans=v[i];
NumbTrans++;
}
else CapTrans+=v[i];
if(NumbTrans>K)
return false;
}
return true;
}
int main()
{
f>>N>>K;
for(int i=1;i<=N;i++)
{
f>>v[i];
low=max(low,v[i]);
high+=v[i];
}
v[N+1]=1e9;
while(low<=high)
{
mid=low+(high-low)/2;
if(F(mid))
{
ans=min(ans,mid);
high=mid-1;
}
else low=mid+1;
}
g<<ans;
return 0;
}