Submission #617212

#TimeUsernameProblemLanguageResultExecution timeMemory
617212Mr_HusanboyDiversity (CEOI21_diversity)C++14
38 / 100
7062 ms9048 KiB
#pragma GCC optimize("Ofast")

#include<bits/stdc++.h>


 
 
using namespace std;
using ll = long long;


 
mt19937 rng(123);
#define ld long double
#define ull unsigned long long 
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define vi vector<int>
#define vll vector<ll>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pld pair<ld,ld>
#define setp(x) setprecision(x)


ll mod=1e9+7;
int inf=1e9;
const int LOGN = 20;
const int MXX=3e5;

const long double PI = 3.1415926535897932384626433832795;




ll calc(deque<ll> v){
	ll ans = 0;
	for(auto u : v) ans += (u+1)*u/2;
	int n = v.size();
	for(ll i = 0; i < n; i ++){
		for(ll j = i + 1; j < n; j ++){
			ans += (j-i + 1) * (v[j] * v[i]);
		}
	}
	return ans;
}

ll calcc(deque<int> v){
	int ans = 0;
	int n = v.size();
	for(int i = 0; i < n; i ++){
		set<int> st;
		for(int j = i; j < n; j ++){
			st.insert(v[j]); ans += st.size();
		}
	}
	return ans;
}


void solve(){
	int n, q; cin >> n >> q;
	map<int,int> mp;
	for(int i = 0; i<n; i ++){
		int x; cin >> x; x --;
		mp[x] ++;
	}
	vector<pair<int,int>> v;
	for(auto u : mp){
		v.push_back({u.ss,u.ff});
	}
	sort(all(v), greater<>());
//	for(auto u : v) cout << u.ff << ' ' << u.ss << endl;cout << endl;
	deque<int> a;
	int col = 1;
	deque<ll> arr;
	for(auto u : v){
		int tem = u.ff;
		if(col){
		//	while(tem --){ a.push_back(u.ss);}
			arr.push_back(u.ff);
		}else{
		//	while(tem --){	a.push_front(u.ss);}
			arr.push_front(u.ff);
		}
		col^=1;
	}
	
	
	cout << calc(arr);// << ' ' << calcc(a);
}

 
int main(){
	int testcases = 1;
//	cin >> testcases;
	while(testcases --){
		solve(); if(testcases) cout << '\n';
		cout << endl;
	}
} 

Compilation message (stderr)

diversity.cpp: In function 'void solve()':
diversity.cpp:80:7: warning: unused variable 'tem' [-Wunused-variable]
   80 |   int tem = u.ff;
      |       ^~~
#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...