Pagini recente » Cod sursa (job #505401) | Cod sursa (job #2338443) | Cod sursa (job #916166) | Arhiva de probleme | Cod sursa (job #1571610)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int v[16005];
int maxx, st, dr, ans, n, k;
inline void read()
{
in >> n >> k;
for(int i = 1; i <= n; ++i)
{
in >> v[i];
if(v[i] > maxx)
{
maxx = v[i];
}
}
st = maxx;
dr = 16000*16000;
}
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;
ans = med;
}
}
}
inline void print()
{
out << ans;
}
int main()
{
read();
solve();
print();
return 0;
}