Pagini recente » Cod sursa (job #101655) | Cod sursa (job #2388145) | Cod sursa (job #213061) | Cod sursa (job #786770) | Cod sursa (job #1314257)
#include <fstream>
#define nmax 16001
using namespace std;
unsigned long long v[nmax];
int n;
bool verif(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;
}
long long cb(long long in, long long sf, int t)
{
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);
}