Pagini recente » Cod sursa (job #1501590) | Cod sursa (job #2940353) | Cod sursa (job #2547513) | Cod sursa (job #268639) | Cod sursa (job #1801146)
#include <fstream>
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
long long n, k, u, a[16001], p, m, i;
int verif (int m)
{
int s=0, nr=0;
for (int i=n; i>0; i--){
if (s+a[i]<=m) s+=a[i];
else{
s=a[i];
nr++;
}
// g << s << '\n';
if (a[i]>m) {
// g << '\n';
return 0;
}
}
// g << " ";
nr++;
// g << nr << '\n' << '\n';
if (nr<=k) return 1;
return 0;
}
int main ()
{
f >> n >> k;
u=0;
for (i=n; i>0; i--)
f >> a[i], u+=a[i];
p=0;
while (p<=u){
m=p+(u-p)/2;
// g << m << " ";
//// g << verif(m) << " ";
// g << p << " " << m << " " << u << '\n';
if (verif(m)) u=m-1;
else p=m+1;
}
// g << '\n';
g << p;
return 0;
}