Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //#include <chrono>
- //#include <fstream>
- //#include <bits/stdc++.h>
- #include <vector>
- #define mp make_pair
- #define pb push_back
- #define eb emplace_back
- #define f first
- #define s second
- #define sz(x) (int)x.size()
- #define all(x) begin(x), end(x)
- #define rall(x) rbegin(x), rend(x)
- using namespace std;
- typedef unsigned long long ull;
- typedef long long ll;
- typedef long double ld;
- typedef pair<int, int> pi;
- typedef pair<ll, ll> pl;
- int n, k;
- vector<int> vec;
- bool check(int len) {
- int count = 0;
- int in = 0;
- int cur_sum = 0;
- while (in < vec.size()) {
- cur_sum += vec[in];
- if (cur_sum >= len) {
- count++; cur_sum = 0;
- }
- in++;
- }
- return count + 1 >= k;
- }
- int main() {
- /*ifstream cin("in.txt");
- ofstream cout("out.txt");
- auto start_time = chrono::high_resolution_clock::now();*/
- ios::sync_with_stdio(false);
- cin.tie(0);
- cout.tie(0);
- cin >> n >> k;
- vec.assign(n - 1, 0);
- int prev; cin >> prev;
- int l = 0, r = prev;
- for (int i = 0; i < n - 1; i++) {
- cin >> vec[i];
- swap(prev, vec[i]);
- vec[i] = prev - vec[i];
- }
- r = prev - r + 1;
- while (l + 1 < r) {
- int mid = (l + r) / 2;
- if (check(mid))
- l = mid;
- else
- r = mid;
- }
- cout << l << "\n";
- /*auto end_time = chrono::high_resolution_clock::now();
- chrono::duration<double> duration = end_time - start_time;
- cout << duration.count() << "\n";
- cin.close();
- cout.close();*/
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment