Submission #967559

#TimeUsernameProblemLanguageResultExecution timeMemory
967559antonDiversity (CEOI21_diversity)C++17
64 / 100
225 ms26456 KiB
#include<bits/stdc++.h>

using namespace std;
#define int long long
#define pii pair<int, int>

struct seq{
    int s=0;
    int sc= 0;

    void insert(int v){
        s+= v;
        sc+=s;
    }
};
int arithmetic(int v){
    return v*(v+1)/2;
}
signed main(){
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);
    int n, q;
    cin>>n>>q;
    vector<int> v(n);
    map<int, int> oc;
    for(int i = 0; i<n; i++){
        cin>>v[i];
        oc[v[i]] ++;
    }

    deque<int> dq;
    vector<pii> groups;
    for(auto e: oc){
        groups.push_back(e);
    }
    auto cmp =[&](pii& a, pii& b){
        return a.second>b.second;
    };
    sort(groups.begin(), groups.end(), cmp);


    int res= 0;
    for(int i = 0; i<groups.size(); i++){
        if(i%2 == 0){
            dq.push_back(groups[i].second);
        }
        else{
            dq.push_front(groups[i].second);
        }
        res += arithmetic(groups[i].second);
    }


    seq s;
    s.insert(dq.back());

    for(int i = dq.size()-2; i>=0; i--){
        res+= (s.s+s.sc)*dq[i];
        s.insert(dq[i]);
    }
    for(int i = 0; i<q; i++){
        int a, b;
        cin>>a>>b;
        cout<<res<<endl;
    }
}

Compilation message (stderr)

diversity.cpp: In function 'int main()':
diversity.cpp:43:21: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for(int i = 0; i<groups.size(); i++){
      |                    ~^~~~~~~~~~~~~~
#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...