Pagini recente » Cod sursa (job #2781664) | Cod sursa (job #3255057) | Cod sursa (job #2069258) | Cod sursa (job #3244071) | Cod sursa (job #526414)
Cod sursa(job #526414)
#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<<28;
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(x[i]>y)
return false;
if (cap+x[i]>y) {
cap=0;
++nr;
}
cap+=x[i];
if(nr>k)
return false;
}
return true;
}