Submission #1154978

#TimeUsernameProblemLanguageResultExecution timeMemory
1154978ace5Diversity (CEOI21_diversity)C++20
64 / 100
33 ms14008 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int maxn = 300005;

vector<ll> vs(maxn);

vector<ll> reorder(vector<ll> a)
{
    sort(a.rbegin(),a.rend());
    deque<ll> ans;
    ll lv = 0,rv = 0;
    ll sum = 0;
    for(int i = 0;i < a.size();++i)
    {
        if(i%2 == 0)
        {
            ans.push_front(a[i]);
            lv += a[i] * 2;
            lv += sum;
            rv += a[i] * (ans.size()+1);
            sum += a[i];
        }
        else
        {
            ans.push_back(a[i]);
            rv += a[i] * 2;
            rv += sum;
            lv += a[i] * (ans.size()+1);
            sum += a[i];
        }
    }
    vector<ll> h;
    for(int i = 0;i < ans.size();++i)
        h.push_back(ans[i]);
    return h;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n,q;
    cin >> n >> q;
    vector<ll> a(n);
    for(int i = 0;i < n;++i)
    {
        cin >> a[i];
        vs[a[i]]++;
    }
    vs = reorder(vs);
    ll res = 0,tsum = 0,tres = 0;
    for(int i = maxn-1;i >= 0;--i)
    {
        res += vs[i] * (vs[i]+1) / 2;
        res += tres * vs[i];
        tres += 2*vs[i];
        tres += tsum;
        tsum += vs[i];
    }
    cout << res;
    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...