Pagini recente » Cod sursa (job #623047) | Cod sursa (job #3283185) | Cod sursa (job #2524585) | Cod sursa (job #1918975) | Cod sursa (job #1571615)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int v[16005];
int maxx, st, dr, ans, n, k, sum;
inline void read()
{
in >> n >> k;
for(int i = 1; i <= n; ++i)
{
in >> v[i];
sum += v[i];
if(v[i] > maxx)
{
maxx = v[i];
}
}
st = maxx;
dr = sum;
}
bool fit(int sz)
{
int count_truck = 0;
int sum = 0;
for(int i = 1; i <= n; ++i)
{
if(sum+v[i] <= sz)
{
sum += v[i];
}
else
{
sum = v[i];
++count_truck;
}
}
return (count_truck < k);
}
void solve()
{
while(st <= dr)
{
int med = (st + dr)/2;
if(fit(med) == true)
{
dr = med - 1;
ans = med;
}
else
{
st = med+1;
//ans = med;
}
}
}
inline void print()
{
out << ans;
}
int main()
{
read();
solve();
print();
return 0;
}