Submission #1191162

#TimeUsernameProblemLanguageResultExecution timeMemory
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...