Pagini recente » Cod sursa (job #2426071) | Cod sursa (job #3273901) | Cod sursa (job #659773) | Cod sursa (job #2374687) | Cod sursa (job #3210287)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
bool mergetransportul(int v[], int n, int tmax, int vmax){
int s=0;
int ctr=0;
for (int i =1; i<=n;i++){
if(s+v[i]>vmax){
ctr++;
s=0;
// s=s-vmax;
}
s+=v[i];
if(ctr>tmax)
return 0;
}
return 1;
}
const int VMAX = 16e3;
int v[VMAX+1];
int main()
{
int n,k;
cin>>n>>k;
for (int i =1; i<=n;i++){
cin>>v[i];
}
int st=1, dr=VMAX*VMAX, rez = dr+1;
while(st<=dr){
int m = (st+dr)/2;
if(mergetransportul(v,n,k,m))
{
rez=m;
dr=m-1;
}
else{
st=m+1;
}
}
cout<<rez;
return 0;
}