Pagini recente » Cod sursa (job #412885) | Cod sursa (job #2226983) | Cod sursa (job #237174) | Cod sursa (job #1546553) | Cod sursa (job #2836608)
#include <iostream>
#include <fstream>
using namespace std;
const int REZ_MAX = 27e7;
int sp[16001];
int verif(int c, int n, int maxi){
if(c < maxi)
return 2e4;
int pa = 0;
int nr = 0;
for(int i = 1; i <= n; i++){
int vol = sp[i] - sp[pa];
if(vol > c){
nr++;
pa = i - 1;
if(i == n){
nr++;
}
}else if(vol == c){
nr++;
pa = i;
}else if(i == n){
nr++;
}
}
return nr;
}
int main()
{
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k;
fin >> n >> k;
int maxi = -1;
for(int i = 1; i <= n; i++){
fin >> sp[i];
if(sp[i] > maxi)
maxi = sp[i];
sp[i] += sp[i - 1];
}
int st = 1, dr = REZ_MAX, rez = -1;
while(st <= dr){
int 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;
}