Pagini recente » Cod sursa (job #1187858) | Cod sursa (job #2933004) | Cod sursa (job #1178075) | Cod sursa (job #3183587) | Cod sursa (job #1041254)
#include<fstream>
using namespace std;
ifstream fi("transport.in");
ofstream fo("transport.out");
int n,k,i;
int v[16005];
int mid,st,dr=0,maxim=0;
bool posibil(int c){
int i,s=0,nr=1;
for(i=1;i<=n;i++) {
s+=v[i];
if (s>c) {
nr++;
s=v[i];
}
if (nr>k) return 0;
}
return 1;
}
int main(){
fi>>n>>k;
for(i=1;i<=n;i++) {
fi>>v[i];
if (v[i]>maxim) maxim=v[i];
dr+=v[i];
}
st=maxim;
while(st!=dr)
{
mid=(st+dr)/2;
if (posibil(mid)) dr=mid;
else st=mid+1;
}
fo<<dr;
fi.close();
fo.close();
return 0;
}