104. 货仓选址
数轴上n个人的坐标,问走的一起的总路程最小是多少?
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin >> n;
std::vector<int> a(n);
for (int i = 0; i < n; ++i) {
std::cin >> a[i];
}
int m = n / 2;
std::sort(a.begin(), a.end());
i64 ans = 0;
for (int x : a) {
ans += std::abs(x - a[m]);
}
std::cout << ans << "\n";
}
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin >> n;
std::vector<int> a(n);
for (int i = 0; i < n; ++i) {
std::cin >> a[i];
}
std::sort(a.begin(), a.end());
i64 ans = 0;
for (int i = 0; i < n; ++i) {
ans += a[i] - a[i / 2];
}
std::cout << ans << "\n";
}
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin >> n;
std::vector<int> a(n);
for (int i = 0; i < n; ++i) {
std::cin >> a[i];
}
int m = n / 2;
std::nth_element(a.begin(), a.begin() + m, a.end());
i64 ans = 0;
for (int x : a) {
ans += std::abs(x - a[m]);
}
std::cout << ans << "\n";
}
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin >> n;
constexpr int N = 4E4 + 5;
std::vector<int> cnt(N);
for (int i = 0, x; i < n; ++i) {
std::cin >> x;
++cnt[x];
}
i64 ans = 0;
for (int i = 0, s = 0; i < N; ++i) {
s += cnt[i];
ans += std::min(s, n - s);
}
std::cout << ans << "\n";
}

浙公网安备 33010602011771号