Pagini recente » Cod sursa (job #1326609) | Cod sursa (job #2440459) | Cod sursa (job #1769767) | Cod sursa (job #3247391) | Cod sursa (job #1958971)
#include <fstream>
using namespace std;
ifstream F("transport.in");
ofstream G("transport.out");
int n, K, v[16001], s, maxx, st, dr, mij;
int YouMayTransport(int x)
{
int k = 0, i = 1, S;
while(k < K && i <= n)
{
S = 0;
while(S + v[i] <= x && i <= n)
S += v[i], ++ i;
++ k;
}
if(i <= n)
return 0;
return 1;
}
int main()
{
F >> n >> K;
for(int i = 1; i <= n; ++ i)
{
F >> v[i];
if(v[i] > maxx)
maxx = v[i];
s += v[i];
}
st = maxx;
dr = s;
while(st <= dr)
{
mij = st + (dr - st) / 2;
if(YouMayTransport(mij))
dr = mij - 1;
else
st = mij + 1;
}
G << mij;
return 0;
}