Pagini recente » Cod sursa (job #1456847) | Cod sursa (job #3242148) | Cod sursa (job #1730576) | Cod sursa (job #1365171) | Cod sursa (job #2484361)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int canHandleInK(long long mij, int k, vector <int>&v, int n)
{
int countTrucks = 0, localk = mij;
for (int i = 1; i <= n; i++)
{
if (localk - v[i] < 0)
{
countTrucks++;
localk = mij;
}
localk -= v[i];
}
countTrucks += 1;
//cout << mij << " " << countTrucks << "\n";
if (countTrucks <= k)
return 1;
return 0;
}
int BinarySearch(int st, long long dr, int k, vector <int>&v, int n)
{
int ans = -1;
while (st <= dr)
{
long long mij = (st + dr) / 2;
if (canHandleInK(mij, k, v, n))
{
ans = mij;
dr = mij - 1;
}
else
{
st = mij + 1;
}
}
return ans;
}
int main()
{
int n, maxVal = -1, k;
f >> n >> k;
vector <int> v(n + 1);
for (int i = 1; i <= n; i++)
{
f >> v[i];
maxVal = max(maxVal, v[i]);
}
g << BinarySearch(maxVal, 256000001, k, v, n);
return 0;
}