Pagini recente » Cod sursa (job #3285723) | Cod sursa (job #2864266) | Cod sursa (job #790297) | Cod sursa (job #3235437) | Cod sursa (job #2621923)
#include <fstream>
std::ifstream f("transport.in");
std::ofstream g("transport.out");
int main(){
int n, i=0, x,k, v[17000], maxx = 0, s = 0;
f>>n>>k;
while(f>>x)
{i++;
v[i]=x;
if(v[i] > maxx)///aflu elementul maxim
maxx = v[i];
s += v[i];///fac suma numerelor
}
int ss=0,l = maxx, r = s, mid, ok=0 , R = 257000000;///l-left, r-right
while(l <= r)
{
mid = (l + r) / 2;
ss = 0;
ok = 0;
for(i=1; i<=n; i++)
{
ss += v[i];
if(mid<ss)
{
ok++;
ss = v[i];
}
}
ok++;
if(k>=ok)
{
r = mid - 1;
if(mid < R)
R = mid;
}
else
l = mid + 1;
}
g<<R;
return 0;
}