Pagini recente » Cod sursa (job #282239) | Cod sursa (job #930623) | Cod sursa (job #2320391) | Cod sursa (job #512227) | Cod sursa (job #526407)
Cod sursa(job #526407)
#include<iostream>
#include<fstream>
using namespace std;
ifstream aa("transport.in");
ofstream ss("transport.out");
int sum,n,k,i,j,pas,x[16001],smax,ssmax;
bool test(int y);
int caut();
int main() {
aa >> n >> k;
for (i=1;i<=n;++i) {
aa >> x[i];
sum+=x[i];
if (x[i]>smax) smax=x[i];
}
ss << caut();
aa.close();
ss.close();
return 0;
}
int caut() {
int j;
pas=1;
while (pas<=sum-smax) pas*=2;
pas/=2;
for (j=smax;pas!=0;pas/=2) {
if (test(j+pas)) j=smax+pas;
}
return j;
}
bool test(int y) {
int nr=1,cap=0;
for (int kk=1;kk<=n;++kk) {
if (cap+x[kk]>y) {
cap=0;
++nr;
}
cap+=x[kk];
}
if (nr<=k) return true;
return false;
}