Pagini recente » Cod sursa (job #2610649) | Cod sursa (job #1844068) | Cod sursa (job #1159995) | Cod sursa (job #1933670) | Cod sursa (job #2836574)
#include <iostream>
#include <fstream>
using namespace std;
const long long REZ_MAX = 27e7;
long long sp[16001];
int verif(int c, int n, int maxi){
if(c < maxi)
return 2e4;
long long pa = 0;
long long nr = 0;
for(int i = 1; i <= n; i++){
long long vol = sp[i] - sp[pa];
if(vol >= c){
nr++;
pa = i - 1;
}else if(i == n){
nr++;
}
}
return nr;
}
int main()
{
ifstream fin("transport.in");
ofstream fout("transport.out");
long long n, k;
fin >> n >> k;
long long maxi = -1;
for(int i = 1; i <= n; i++){
fin >> sp[i];
if(sp[i] > maxi)
maxi = sp[i];
sp[i] += sp[i - 1];
}
long long st = 1, dr = REZ_MAX, rez = -1;
while(st <= dr){
long long mij = (st + dr)/2;
if(verif(mij, n, maxi) <= k ){
rez = mij;
dr = mij - 1;
}else{
st = mij + 1;
}
}
fout << rez;
fin.close();
fout.close();
return 0;
}