Pagini recente » Cod sursa (job #1855197) | Cod sursa (job #3356189) | Cod sursa (job #3323086) | Cod sursa (job #3344887) | Cod sursa (job #3323260)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int dim= 16005;
int n, k;
int v[dim];
bool solve(int x){
int cnt, suma;
cnt= suma= 0;
int i= 1;
while(i <= n){
if(suma+ v[i] > x){
suma= 0;
cnt++;
}
else{
suma+= v[i];
i++;
}
}
if(suma > 0)
cnt++;
if(cnt <= k)
return true;
return false;
}
int main()
{
int i, j;
cin >> n>> k;
int suma= 0;
int maxi= -1;
for(i= 1;i <= n;i++){
cin >> v[i];
maxi= max(maxi, v[i]);
suma+= v[i];
}
int st= maxi, dr= suma, rez= 0;
while(st <= dr){
int mij= (st+ dr)/ 2;
int ok= solve(mij);
if(ok== 1){
rez= mij;
dr= mij- 1;
}
else{
st= mij+ 1;
}
}
cout << rez;
return 0;
}