#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 300300;
int a[N];
ll qs[N];
int cnt[N];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n, q;
cin >> n >> q;
for (int i = 1;i <= n;i++) {
cin >> a[i];
cnt[a[i]]++;
}
while (q--) { int __; cin >> __ >> __; }
vector<pair<int, int>> v;
for (int i = 1;i <= 300000;i++) {
if (cnt[i]) v.push_back({ cnt[i], i });
}
sort(v.begin(), v.end());
deque<int> f, b;
for (int i = 0;i < (int)v.size();i++) {
if (i & 1) {
for (int j = 1;j <= v[i].first;j++) f.push_back(v[i].second);
}
else {
for (int j = 1;j <= v[i].first;j++) b.push_front(v[i].second);
}
}
int idx = 0;
for (int i = 0;i < (int)f.size();i++) {
a[++idx] = f[i];
}
for (int i = 0;i < (int)b.size();i++) {
a[++idx] = b[i];
}
ll ans = 1ll * n * (n + 1) / 2;
for (int i = 1;i <= n;i++) {
qs[i] = qs[i - 1] + (a[i] != a[i - 1]);
ans += qs[i] * (2 * i - 1 - n);
}
cout << ans << '\n';
// 1 1 1 2
// 1 2 2 2
// -3 -1 1 3
// 1 1 1 2 2
// 1 1 2 2 2
// -4 -2 0 2 4
return 0;
}
# | 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... |