Pagini recente » Cod sursa (job #2901599) | Cod sursa (job #1316152) | Cod sursa (job #2101593) | Cod sursa (job #447278) | Cod sursa (job #2366595)
#include <iostream>
#include <fstream>
const int MAXN = 16e3 + 5;
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,v[MAXN];
bool ok(long long x){
long long suma = 0;
int numar_transporturi = 0;
for(int i = 1; i <= n; i++){
if(suma + v[i] > x){
suma = 0;
numar_transporturi++;
}
suma += v[i];
}
if(suma)
numar_transporturi++;
return (numar_transporturi <= k);
}
long long cautbin(){
long long pas = 1LL<<31,r = 0;
while(pas){
if(!ok(r + pas))
r += pas;
pas /= 2;
}
return r + 1;
}
int main()
{
in>>n>>k;
for(int i = 1; i <= n; i++)
in>>v[i];
out<<cautbin();
return 0;
}