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";
}
