Pagini recente » Cod sursa (job #712278) | Cod sursa (job #793545) | Cod sursa (job #1508554) | Cod sursa (job #1556582) | Cod sursa (job #498529)
Cod sursa(job #498529)
#include <fstream>
using namespace std;
int const maxn=16*1000;
int S[maxn],N,K;
bool ok(int w)
{ int i,l=0,c=1,t;
for(i=0;N>i;++i)
{ t=l+S[i];
if(t>w)
{ l=S[i];++c;
if(c>K){return false;}
}
else{l=t;}
}
return true;
}
int main()
{ ifstream is("transport.in");
ofstream os("transport.out");
is>>N>>K;int i,a,b,m;
for(i=0;N>=i;++i){is>>S[i];}
a=S[0];for(i=1;N>i;++i){if(S[i]<a){a=S[i];}}
b=S[0];for(i=1;N>i;++i){if(S[i]>b){b=S[i];}}
b*=((N/K)+((0!=(N%K))?1:0));
while(a<b)
{ m=(a+b)/2;
if(ok(m)){b=m;}else{a=m+1;}
}
os<<b<<endl;
}