Submission #1300574

#TimeUsernameProblemLanguageResultExecution timeMemory
1300574Davdav1232Diversity (CEOI21_diversity)C++20
64 / 100
44 ms5572 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vi> vvi; 


int main(){
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int n, q;
    cin>>n>>q;
    if(q!=1) return 0;
    vector<int> a(n);
    for(int i=0; i<n; i++){
        cin>>a[i];
    }
    sort(a.begin(), a.end());
    vector<ll> c;
    int curr=0;
    int l=-1;
    for(int i=0; i<n; i++){
        if(a[i]==l) curr++;
        else{
            c.push_back(curr);
            curr=1;
            l=a[i];
        }
    }
    cin>>l>>l;
    c.push_back(curr);
    sort(c.begin(), c.end());
    //need to reorder c
    l=c.size();
    vector<ll> d(l);
    for(int i=0; i<l; i++){
        if(i%2==0){
            d[(l)/2+i/2]=c[l-i-1];
        }
        else{
            d[(l)/2-(i+1)/2]=c[l-i-1];
        }
    }
    ll s=0;
    ll sum=0;
    ll ans=0;
    for(ll r : d){
        ans+=(r*(r+1))/2;
        ans+=s*r;
        sum+=r;
        s+=sum+r;    
    }
    cout<<ans;
}
#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...