Pagini recente » Cod sursa (job #2562676) | Cod sursa (job #870172) | Cod sursa (job #156232) | Cod sursa (job #2680531) | Cod sursa (job #1314253)
#include <fstream>
#define nmax 16001
using namespace std;
unsigned long long v[nmax];
int n;
bool verif(unsigned long long cap,int t)
{
int poz = 0;
for (int i = 1; i <= t;i++)
{
int j = poz;
while (v[j] - v[poz]<=cap)
{
if (j == n)
return 1;
j++;
}
j--;
poz = j;
}
return 0;
}
int cb(unsigned long long in, unsigned long long sf, int t)
{
unsigned long long pow,pas, i;
for ( pow = 1; pow <= sf - in + 1; pow <<= 1);
for (pas = pow, i = sf + 1; pas; pas >>= 1)
{
if (i - pas >= in && verif(i - pas,t))
i -= pas;
}
return i;
}
ifstream fin("transport.in");
ofstream fout("transport.out");
int main()
{
int k;
int x;
int min = 0;
fin >> n >> k;
for (int i = 1; i <= n; i++)
{
fin >> x;
v[i] += v[i - 1] + x;
if (x > min)
{
min = x;
}
}
fout << cb(min, v[n],k);
}