Submission #1186766

#TimeUsernameProblemLanguageResultExecution timeMemory
1186766UnforgettableplDiversity (CEOI21_diversity)C++20
38 / 100
7091 ms9656 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int modulo = 1e9+7;


int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int N,Q;
    cin >> N >> Q;
    vector<int> arr(N);
    for(int&i:arr)cin>>i;
    vector<int> newarr;
    {
        int c=0;
        map<int,int> comp;
        for(int&i:arr){
            if(!comp.count(i)){
                comp[i]=c++;
                newarr.emplace_back(0);
            }
            newarr[comp[i]]++;
        }
    }
    sort(newarr.rbegin(),newarr.rend());
    int cost = 0;
    swap(arr,newarr);
    int n = arr.size();
    int t = 0;
    deque<int> ans;
    for(int i=0;i<n;i++){
        int prevCost = 0;
        int nextCost = 0;
        for(int x=0;x<ans.size();x++){
            prevCost+=ans[x]*(x+1);
            nextCost+=ans[x]*(ans.size()-x);
        }
        if(prevCost<nextCost){
            ans.emplace_front(arr[i]);
        } else {
            ans.emplace_back(arr[i]);
            swap(nextCost,prevCost);
        }
        cost+=prevCost*arr[i];
        cost+=t*arr[i];
        cost+=((arr[i]+1ll)*arr[i])/2ll;
        t+=arr[i];
    }
    cout << cost << '\n';
}
#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...