Pagini recente » Cod sursa (job #1562163) | Cod sursa (job #3247108) | Cod sursa (job #1927358) | Cod sursa (job #3005191) | Cod sursa (job #526409)
Cod sursa(job #526409)
#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=0;pas!=0;pas/=2) {
if (!test(j+pas))
j+=pas;
}
return 1+j;
}
bool test(int y) {
int nr=1,cap=0;
for (int i=1;i<=n;++i) {
if (cap+x[i]>y) {
cap=0;
++nr;
}
cap+=x[i];
if(nr>k)
return false;
}
return true;
}