Pagini recente » Cod sursa (job #1329044) | Cod sursa (job #1677083) | Cod sursa (job #705726) | Cod sursa (job #3241872) | Cod sursa (job #3357323)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16005];
int main()
{
int n, k, c, S = 0, cnt = 1;
long long Sum = 0, maxi = -10000;
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> v[i];
for(int i = 1; i <= n; i++)
if(v[i] > maxi)
maxi = v[i];
for(int i = 1; i <= n; i++)
Sum += v[i];
long long st = maxi, dr = Sum, mij;
while(st <= dr)
{
mij = (st+ dr) / 2;
S = 0;
cnt = 1;
for(int i = 1; i <= n; i++)
{
if(S + v[i] <= mij)
S += v[i];
else
{
cnt++;
S = v[i];
}
}
if(cnt <= k)
{
c = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
cout << c;
return 0;
}