제출 #572458

#제출 시각아이디문제언어결과실행 시간메모리
572458valerikkDiversity (CEOI21_diversity)C++17
64 / 100
49 ms6416 KiB
#include <bits/stdc++.h>

using namespace std;

int cnt[300001];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

	int n, Q;
	cin >> n >> Q;

	vector<int> a(n);
	for (int i = 0; i < n; ++i) {
		cin >> a[i];
	}

	for (int i = 0; i < n; ++i) {
		++cnt[a[i]];
	}

	vector<int> x;
	for (int i = 1; i <= 300000; ++i) {
		if (cnt[i] > 0) 
			x.push_back(cnt[i]);
	}

	sort(x.rbegin(), x.rend());

	int k = x.size();

	deque<int> q;
	for (int i = 0; i < k; ++i) {
		if (i & 1)
			q.push_front(x[i]);
		else
			q.push_back(x[i]);
	}
 
	x.clear();
	for (int i : q)
		x.push_back(i);
 
	long long ans = n * 1ll * (n + 1) / 2 * k;
	
	long long sum = 0;
	for (int i = 0; i < k; ++i) {
		ans -= sum * (sum + 1) / 2;
		sum += x[i];
	}
	sum = 0;
	for (int i = k - 1; i >= 0; --i) {
		ans -= sum * (sum + 1) / 2;
		sum += x[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...