This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
using namespace std;
#define for_(i, s, e) for (int i = s; i < (int) e; i++)
#define for__(i, s, e) for (ll i = s; i < e; i++)
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> ii;
#define endl '\n'
int n, k;
vector<ll> nums, pref;
ll f(ll mid, ll st, ll end) {
ll nn = end-st+1;
if (mid >= 0) {
int excl = lower_bound(nums.begin()+st, nums.begin()+end+1, -mid) - nums.begin();
int excr = upper_bound(nums.begin()+st, nums.begin()+end+1, 0) - nums.begin();
ll rem = mid * (2*excl-st-end-1);
if (excl < excr) rem += 2 * (pref[excr-1] - (excl > 0 ? pref[excl-1] : 0));
return rem;
}
int excr = upper_bound(nums.begin()+st, nums.begin()+end+1, -mid) - nums.begin();
int excl = (lower_bound(nums.begin()+st, nums.begin()+end+1, 0) - nums.begin());
ll rem = (end+st+1-2*excr) * abs(mid);
if (excl < excr) rem += 2 * (pref[excr-1] - (excl > 0 ? pref[excl-1] : 0));
return rem;
}
int main() {
#ifdef shiven
freopen("test.in", "r", stdin);
#endif
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n >> k;
nums.resize(n); pref.resize(n);
for_(i, 0, n) cin >> nums[i];
for_(i, 0, n) {
ll v; cin >> v;
nums[i] -= v;
}
sort(nums.begin(), nums.end());
for_(i, 0, n) {
pref[i] = abs(nums[i]);
if (i > 0) pref[i] += pref[i-1];
}
ll ans = n == k ? 0 : LONG_LONG_MAX;
if (n > k) for_(st, 0, n) {
int end = n-k-1+st;
if (st > end or st > k) {
break;
}
ll l = -nums[end], r = -nums[st];
while (r-l >= 3) {
ll m1 = l + (r-l) / 3, m2 = r - (r-l) / 3;
if (f(m1, st, end) < f(m2, st, end)) l = m1;
else r = m2;
}
ll rem = 0;
for_(i, l, r+1) rem = max(rem, f(i, st, end));
ans = min(ans, pref[end] - (st > 0 ? pref[st-1] : 0) - rem);
}
cout << ans << endl;
return 0;
}
Compilation message (stderr)
simfonija.cpp: In function 'll f(ll, ll, ll)':
simfonija.cpp:14:5: warning: unused variable 'nn' [-Wunused-variable]
14 | ll nn = end-st+1;
| ^~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |