Pagini recente » Monitorul de evaluare | Cod sursa (job #3120884) | Cod sursa (job #178420) | Cod sursa (job #1758840) | Cod sursa (job #1717419)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n, k, v[16001];
void read() {
in>>n>>k;
for(int i=1;i<=n;i++) {
in>>v[i];
}
}
bool posibil(int capacitate) {
int curent = 0;
int drumuri = 1;
for(int i=1;i<=n;i++) {
if (v[i] > capacitate) return false;
if(curent + v[i] > capacitate) {
curent = 0;
drumuri++;
}
curent += v[i];
}
if(drumuri <= k)
return true;
return false;
}
void binar() {
int pas = 1<<27;
int nr = 0;
while(pas != 0) {
if(!posibil(nr+pas))
nr += pas;
pas /= 2;
}
out<<nr+1;
}
int main() {
read();
binar();
in.close();
out.close();
return 0;
}