This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define gibon ios::sync_with_stdio(false); cin.tie(0);
#define fir first
#define sec second
#define pdd pair<double, double>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pmax pair<__int128, __int128>
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
typedef long long ll;
using namespace std;
int dx[4]={0, 1, 0, -1}, dy[4]={1, 0, -1 , 0};
const int mxN=300003;
const int mxM=1010;
const int mxK=105;
const int MOD=1000000007;
const ll INF=1e18;
const ll P1=1000000007;
const ll P2=1000000009;
int N, Q;
int cnt[mxN];
ll ans;
vector <ll> v;
int main()
{
gibon
cin >> N >> Q;
for(int i=1;i<=N;i++)
{
int a;
cin >> a;
cnt[a]++;
}
for(int i=0;i<mxN;i++) if(cnt[i]!=0)
{
v.push_back(cnt[i]);
}
sort(v.begin(), v.end());
ans=(ll)N*(N+1)/2*(v.size());
ll cnt1=0, cnt2=0;
for(int i=0;i+1<v.size();i++)
{
int ele=v[i];
if(cnt1>cnt2) swap(cnt1, cnt2);
cnt1+=ele;
ans-=cnt1*(cnt1+1)/2+(N-cnt1)*(N-cnt1+1)/2;
}
cout << ans;
}
Compilation message (stderr)
diversity.cpp: In function 'int main()':
diversity.cpp:43:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
43 | for(int i=0;i+1<v.size();i++)
| ~~~^~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |