Pagini recente » Cod sursa (job #2539523) | Cod sursa (job #254903) | Cod sursa (job #181313) | Cod sursa (job #3151977) | Cod sursa (job #3237501)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16001];
int n;
int nrdrumuri(int c){
int i = 1;
int sum = 0;
int transport = 1;
while(i <= n){
if(sum + v[i] <= c){
sum = sum + v[i];
i++;
}
else{
transport++;
sum = 0;
}
}
return transport;
}
int main()
{
int k;
cin >> n >> k;
for(int i = 1; i <= n; i++){
cin >> v[i];
}
int mini = -1;
int maxi = 0;
for(int i = 1; i <= n; i++){
if(v[i] > mini)
mini = v[i];
maxi += v[i];
}
int st = mini;
int dr = maxi;
int sol = 0;
while(st <= dr){
int mijl = (st+dr)/2;
if(nrdrumuri(mijl) > k){
st = mijl+1;
}
else{
sol = mijl;
dr = mijl-1;
}
}
cout << sol;
return 0;
}