Submission #569483

#TimeUsernameProblemLanguageResultExecution timeMemory
569483aryan12Diversity (CEOI21_diversity)C++17
64 / 100
58 ms14028 KiB
#include <bits/stdc++.h> using namespace std; #define int long long mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count()); const int N = 3e5 + 5; void Solve() { int n, q; cin >> n >> q; vector<int> a(n); vector<int> cnt(N, 0); for(int i = 0; i < n; i++) { cin >> a[i]; cnt[a[i]]++; } vector<int> idx(N, 0); for(int i = 0; i < N; i++) { idx[i] = i; } sort(idx.begin(), idx.end(), [&](int i, int j) { return cnt[i] < cnt[j]; }); vector<int> ans(N); int l = 1, r = n; cin >> l >> r; for(int i = 1; i <= N; i++) { for(int j = 0; j < cnt[idx[i]]; j++) { if(i % 2 == 1) ans[l++] = idx[i]; else ans[r--] = idx[i]; } } reverse(ans.begin() + 1, ans.begin() + 1 + n); vector<int> sum(n + 2, 0); sum[n + 1] = 0; for(int i = n; i > 0; i--) { sum[i] = sum[i + 1] + 1; if(i == n || ans[i] != ans[i + 1]) { sum[i] += (n - i); } } int res = 0; for(int i = 1; i <= n; i++) { res += sum[i]; } cout << res << "\n"; } int32_t main() { auto begin = std::chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; // cin >> t; for(int i = 1; i <= t; i++) { //cout << "Case #" << i << ": "; Solve(); } auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n"; 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...