제출 #1191162

#제출 시각아이디문제언어결과실행 시간메모리
1191162GrayDiversity (CEOI21_diversity)C++20
64 / 100
144 ms20688 KiB
#include <algorithm> #include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define ld long double #define ff first #define ss second #define ln "\n" #define mp make_pair #define pb push_back #define INF (ll)1e18 ll MOD = (ll)(1e9+7); void solve(){ ll n, q; cin >> n >> q; vector<ll> a(n); map<ll, ll> cnt; for (ll i=0; i<n; i++){ cin >> a[i]; cnt[a[i]]++; } vector<ll> byc; for (auto [x, c]:cnt){ byc.push_back(c); } sort(byc.begin(), byc.end()); ll left=0, right=0, res=0; for (ll i=0; i<(ll)byc.size(); i++){ if (i%2==0){ res+=n*(n+1)/2-left*(left+1)/2-(n-left-byc[i])*(n-left-byc[i]+1)/2; left+=byc[i]; }else{ res+=n*(n+1)/2-right*(right+1)/2-(n-right-byc[i])*(n-right-byc[i]+1)/2; right+=byc[i]; } } cout << res << ln; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); #ifdef LOCAL auto start = chrono::high_resolution_clock::now(); #endif ll testc=1; // cin >> testc; for (ll __c=1; __c<=testc; __c++) solve(); #ifdef LOCAL auto duration = chrono::duration_cast<chrono::microseconds>(chrono::high_resolution_clock::now() - start); cout << setprecision(0) << fixed << "time: " << (double)duration.count()/1000.0 << " milliseconds" << endl; #endif }
#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...