Submission #1215551

#TimeUsernameProblemLanguageResultExecution timeMemory
1215551KindaGoodGamesDiversity (CEOI21_diversity)C++20
0 / 100
1 ms328 KiB
#include<bits/stdc++.h> #define int long long #define pii pair<int,int> using namespace std; int solve(vector<int>& cur){ int sum = 0; for(int i = 0; i < cur.size(); i++){ for(int j = i; j < cur.size(); j++){ set<int> occ; for(int k = i; k <= j; k++){ occ.insert(cur[k]); } sum += occ.size(); } } return sum; } int32_t main() { int n,q; cin>> n >> q; vector<int>arr(n); for(int i = 0; i < n; i++){ cin >> arr[i]; } // construct small-large-small-large... blocks while(q--){ int l,r; cin >> l >> r; l--;r--; vector<int> cur; map<int,int> freq; for(int i = l; i <= r; i++){ freq[arr[i]]++; } vector<pii> temp; for(auto p : freq){ temp.push_back(p); } sort(temp.begin(),temp.end(), [](pii a, pii b) { if(a.second == b.second) return a.first < b.first; return a.second < b.second; }); vector<int> cur1; int lo = 0, hi = temp.size()-1; while(lo <= hi){ for(int i = 0; i < temp[lo].second; i++){ cur1.push_back(temp[lo].first); } lo++; if(lo > hi) break; for(int i = 0; i < temp[hi].second; i++){ cur1.push_back(temp[hi].first); } hi--; } vector<int> cur2; lo = 0, hi = temp.size()-1; while(lo <= hi){ for(int i = 0; i < temp[hi].second; i++){ cur2.push_back(temp[hi].first); } hi--; if(lo > hi) break; for(int i = 0; i < temp[lo].second; i++){ cur2.push_back(temp[lo].first); } lo++; } int sum1 = solve(cur1); int sum2 = solve(cur2); int sum = min(sum1,sum2); cout << sum << endl; } }
#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...