Pagini recente » Cod sursa (job #145103) | Cod sursa (job #1073987) | Cod sursa (job #2598858) | Cod sursa (job #280867) | Cod sursa (job #2115506)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
long long int n, k, volum[16050];
long long int maxim = 0;
bool transpo(long long int x)
{
long long int s, i = 1, nr = 0;
while(i<=n)
{
s = 0;
while(s+volum[i]<=x && i<=n)
{
s+=volum[i];
i++;
}
nr++;
}
if(nr<=k)
return true;
return false;
}
void loga()
{
long long int lg1 = 268435456;
//long long int i = suma[n]/k;
/*for(; i<suma[n]; i++)
if(transpo(i) == 1)
{
printf("%lld", i);
return;
}*/
long long int i = 268435456;
for(;lg1>0; lg1>>=1)
{
if(i-lg1>=maxim && transpo(i-lg1))
{
i-=lg1;
}
}
printf("%d", i);
}
void rez()
{
for(int i = 1; i<=n; i++)
{
scanf("%lld\n", &volum[i]);
if(volum[i]>maxim)
maxim = volum[i];
}
loga();
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%lld %lld\n", &n, &k);
rez();
return 0;
}