제출 #410881

#제출 시각아이디문제언어결과실행 시간메모리
410881NamnamseoSimfonija (COCI19_simfonija)C++17
55 / 110
34 ms3140 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
using ll = long long;
const int maxn = int(1e5) + 10;
const int inf = int(1e8);
const ll linf = 1ll<<60;

int n, k;

int a[maxn], b[maxn];
int d[maxn];

int kd[maxn];

int main()
{
	cin.tie(0)->sync_with_stdio(0);
	cin >> n >> k;
	if (k == n) { cout << "0\n"; return 0; }
	for (int i=1; i<=n; ++i) cin >> a[i];
	for (int i=1; i<=n; ++i) cin >> b[i];
	for (int i=1; i<=n; ++i) d[i] = b[i]-a[i];
	sort(d+1, d+n+1);

	for (int i=0; i<=k; ++i) {
		if (i+1 <= n)
			kd[i] += d[1+i]-d[1];
		if (n-(k-i) >= 1)
			kd[i] += d[n]-d[n-(k-i)];
	}

	int km = max_element(kd, kd+k+1)-kd;
	rotate(d+1, d+1+km, d+n+1);
	int v = d[1+(n-k)/2];
	ll ans = 0;
	for (int i=1; i<1+(n-k); ++i) {
		ans += abs(v-d[i]);
	}
	cout << ans << endl;

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...