// https://www.infoarena.ro/problema/transport
#include <iostream>
using namespace std;
#include <fstream>
//ofstream fout("transport.in");
ifstream fin("transport.in");
ofstream fout("transport.out");
int main() {
int nSaltele, volumeSalteleStiva[16001], kMaxTransporturi, capaciateMinCamion=1, volumSaltele = 0, volumMaxSaltea = 0, medieTrasport, centru, limitaStanga, limitaDreapta, volumSalteleRamase, capacitateCamion, capacitateRamasaInCamion, transporturi;
fin >> nSaltele >> kMaxTransporturi;
for (int i=1; i<=nSaltele; i++) {
fin >> volumeSalteleStiva[i];
if (i==1) {
volumMaxSaltea = volumeSalteleStiva[1];
} else {
if (volumeSalteleStiva[i] > volumMaxSaltea) {
volumMaxSaltea = volumeSalteleStiva[i];
}
}
volumSaltele = volumSaltele + volumeSalteleStiva[i];
}
if (volumSaltele%kMaxTransporturi == 0) {
medieTrasport = volumSaltele/kMaxTransporturi;
} else {
medieTrasport = volumSaltele/kMaxTransporturi + 1;
}
if (medieTrasport > volumMaxSaltea) {
limitaStanga = medieTrasport;
} else {
limitaStanga = volumMaxSaltea;
}
limitaDreapta = volumSaltele;
// while (limitaStanga<=limitaDreapta) {
// centru = (limitaStanga + limitaDreapta) / 2;
volumSalteleRamase = volumSaltele;
capacitateCamion = limitaStanga;
// while (limitaStanga<=limitaDreapta) {
//
//
//
// }
for (int t=limitaStanga; t<=limitaDreapta; t++) {
capacitateRamasaInCamion = capacitateCamion;
volumSalteleRamase = volumSaltele;
transporturi = 1;
for (int i=1; i<=nSaltele; i++) {
// cout << volumSalteleRamase <<" ";
int volumSaltea = volumeSalteleStiva[i];
if (capacitateRamasaInCamion >= volumSaltea) {
capacitateRamasaInCamion = capacitateRamasaInCamion - volumSaltea;
volumSalteleRamase = volumSalteleRamase - volumSaltea;
} else {
capacitateRamasaInCamion = capacitateCamion;
transporturi++;
if (transporturi > kMaxTransporturi) {
break;
}
if (capacitateRamasaInCamion < volumSaltea) {
break;
}
capacitateRamasaInCamion = capacitateRamasaInCamion - volumSaltea;
volumSalteleRamase = volumSalteleRamase - volumSaltea;
}
}
// cout <<"("<<volumSalteleRamase<< ")\n";
if (volumSalteleRamase <= 0) {
capaciateMinCamion = capacitateCamion;
break;
} else {
capacitateCamion++;
}
}
// }
fout << capaciateMinCamion;
cout <<"\n"<<capaciateMinCamion<< "\n";
return 0;
}