array division

This commit is contained in:
2024-07-23 11:05:53 +02:00
parent 1181d6aa96
commit 1149bd83b4
2 changed files with 43 additions and 1 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,42 @@
// Array Division
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
bool check_sum(vector<ll> &a, ll target_sum, int max_number_of_sub_arrays) {
ll sum = 0;
ll count = 1;
for (int i{}; i < a.size(); i++) {
if (sum + a[i] <= target_sum) {
sum += a[i];
} else {
sum = a[i];
if (sum > target_sum) return false;
count++;
}
}
return count <= max_number_of_sub_arrays;
}
int main() {
int n, k; cin >> n >> k;
vector<ll> a(n);
ll sum = 0;
for (int i{}; i < n; i++) {
cin >> a[i];
sum += a[i];
}
ll lo = 0;
ll hi = INT64_MAX / 3;
while (lo < hi) {
ll mid = (lo + hi) / 2;
if (check_sum(a, mid, k)) {
hi = mid;
} else {
lo = mid + 1;
}
}
cout << lo << endl;
}