# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1054032 | sleepntsheep | Diversity (CEOI21_diversity) | C++17 | 0 ms | 2396 KiB |
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 <cstdio>
#include <algorithm>
#define N 300001
#define A 300001
int o, n, q, a[N], fr[N], fr2[N];
long long z, y;
long long c2(int x) { return (x - 1ll) * x / 2; }
int main() {
scanf("%d%d", &n, &q);
for (int i = 1; i <= n; ++i) scanf("%d", a + i), ++fr[a[i]];
for (int i = 1; i <= 300000; ++i)
++fr2[fr[i]];
int sum = 0;
for (int i = 1; i <= n; ++i)
for (; fr2[i]--; )
a[++o] = i, sum += i;
for (int i = 1; i <= o; ++i) {
int psum = 0;
for (int j = 1; j + 1 <= o; psum += a[j++]) {
int x = psum;
int y = sum - psum - a[j] - a[j + 1];
int a_ = a[j];
int b_ = a[j + 1];
if (-c2(b_ + y + 1) -c2(a_ + x + 1) > -c2(b_ + x + 1) - c2(a_ + y + 1))
std::swap(a[j], a[j + 1]);
}
}
int psum = 0;
for (int i = 1; i <= o; psum += a[i++]) {
z += c2(n + 1) - c2(psum + 1) - c2(sum - psum - a[i] + 1);
}
printf("%lld", z);
}
Compilation message (stderr)
# | 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... |