Pagini recente » Cod sursa (job #37215) | Cod sursa (job #3215230) | Cod sursa (job #3218672) | Cod sursa (job #1455120) | Cod sursa (job #589081)
Cod sursa(job #589081)
#include <cstdio>
#include <fstream>
using namespace std;
int v[16384];
int r,n,k;
int ok (int x){
int m=0,s=0;
for(int i=1;i<=n;++i){
if(s+v[i]>x){
++m;
s=v[i];
}
else
s+=v[i];
}
return m+1;}
void srch (int ft,int bk){
int m=(ft+bk)>>1,kk=ok(m);
if(ft==bk){
if(ft<r&&kk<=k)
r=ft;
return;
}
if(kk<=k){
if(m<r)
r=m;
srch(ft,m);
}
if(kk>k)
srch(m+1,bk);
}
int main ()
{
int x=0;
ifstream in ("transport.in");
freopen ("transport.out","w",stdout);
in>>n>>k;
for(int i=1;i<=n;++i){
in>>v[i];
if(x<v[i])
x=v[i];
r+=v[i];
}
srch(x,r);
printf("%d",r);
return 0;}