제출 #1291878

#제출 시각아이디문제언어결과실행 시간메모리
1291878NValchanovDiversity (CEOI21_diversity)C++20
0 / 100
1 ms568 KiB
#include <iostream> #include <vector> #include <cassert> #include <algorithm> #include <deque> #include <map> using namespace std; typedef long long llong; const int MAXN = 3e5 + 10; int n, q; int a[MAXN]; map < int, int > cnt; int maxa; void read() { cin >> n >> q; for(int i = 1; i <= n; i++) { cin >> a[i]; cnt[a[i]]++; maxa = max(maxa, a[i]); } } void solve() { while(q--) { int left, right; cin >> left >> right; } vector < int > cnts; for(pair < int, int > p : cnt) { cnts.push_back(p.second); } sort(cnts.begin(), cnts.end()); reverse(cnts.begin(), cnts.end()); deque < int > dq; int sz = cnts.size(); for(int i = 0; i < sz; i++) { if(i & 1) { dq.push_back(cnts[i]); } else { dq.push_front(cnts[i]); } } vector < int > suff(sz + 1, 0); for(int i = sz - 1; i >= 0; i--) { suff[i] = suff[i + 1] + dq[i]; } llong ans = 0; llong div = 0; for(int i = 0; i < sz; i++) { div += 1LL * dq[i] * (i + 1); } for(int i = 0; i < sz; i++) { ans += 1LL * dq[i] * div; div -= suff[i]; } for(int i = 0; i < sz; i++) { ans -= 1LL * dq[i] * (dq[i - 1]) / 2; } cout << ans << endl; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); read(); solve(); 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...