Pagini recente » Cod sursa (job #3292257) | Cod sursa (job #1825162) | Cod sursa (job #1396299) | Cod sursa (job #1650732) | Cod sursa (job #1040281)
#include <fstream>
#include <vector>
using namespace std;
bool verif(long long x, vector<int> &vec, int k)
{
long long currSize = 0;
int noOfT = 1;
for (int i = vec.size() - 1; i >= 0; i--)
{
if (x < vec[i])
return false;
if (currSize + vec[i] > x)
{
noOfT++;
currSize = vec[i];
}
else
{
currSize += vec[i];
}
if (noOfT > k)
return false;
}
if (noOfT <= k)
return true;
}
int main()
{
ifstream IN("transport.in");
ofstream OUT("transport.out");
vector<int> vec;
int n, k;
IN >> n >> k;
for (int i = 0; i < n; i++)
{
int x;
IN >> x;
vec.push_back(x);
}
long long pas = 1 << 28;
long long poz = 0;
long long rez;
while (pas > 0)
{
if (verif(pas + poz, vec, k))
rez = pas + poz;
else
poz += pas;
pas >>= 1;
}
OUT << rez << "\n";
return 0;
}