Pagini recente » Cod sursa (job #2409836) | Cod sursa (job #79488) | Cod sursa (job #2476660) | Cod sursa (job #174875) | Cod sursa (job #2836604)
#include <iostream>
#include <fstream>
using namespace std;
const int REZ_MAX = 27e7;
int v[16001];
int verif(int c, int n, int maxi){
if(c < maxi)
return 2e4;
int sc = 0;
int nr = 0;
for(int i = 0; i < n; i++){
sc += v[i];
if(sc > c){
nr++;
sc = v[i];
if(i == n - 1){
nr++;
}
}else if(sc == c){
nr++;
sc = 0;
}else if(i == n - 1){
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 = 0; i < n; i++){
fin >> v[i];
if(v[i] > maxi)
maxi = v[i];
}
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;
}