Pagini recente » Cod sursa (job #1271730) | Cod sursa (job #1766470)
#include <bits/stdc++.h>
using namespace std;
int salt[16001], n, k, ans0;
int solve(int mid){
int sum_at_i = 0;
int first = 1;
for(int i=1;i<=n;i++){
if(sum_at_i + salt[i] < mid)
sum_at_i += salt[i];
else{
sum_at_i = salt[i];
first++;
}
}
return (first);
}
void FindBest(int low, int up,int k){
while(low <= up){
int mid = low + (up - low) / 2;
int number = solve(mid);
if(number <= k){
ans0 = mid;
up = mid - 1;
} else
low = mid + 1;
}
}
int main(){
ifstream fin("transport.in");
ofstream fou("transport.out");
ios_base::sync_with_stdio(0);
int ans = -1;
int sum = 0;
fin >> n >> k;
for(int i=1;i<=n;i++){
fin >> salt[i];
if(salt[i] > ans)
ans = salt[i];
sum = sum + salt[i];
}
int low = ans, up = sum;
FindBest(low, up, k);
fou << ans0;
}