Submission #1189465

#TimeUsernameProblemLanguageResultExecution timeMemory
1189465UmairAhmadMirzaDiversity (CEOI21_diversity)C++20
0 / 100
1 ms324 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
int const N=3e5+5;
int const mod=1e9+7;

int cnt[N];

void solve(){
	int n,q;
	cin>>n>>q;
	for (int i = 0; i < n; ++i)
	{
		int a;
		cin>>a;
		cnt[a]++;
	}
	vector<int> v;
	for (int i = 0; i < N; ++i)
		if(cnt[i]>0)
			v.push_back(cnt[i]);
	sort(v.begin(), v.end());
	reverse(v.begin(), v.end());
	int lft=0,rgt=0;
	vector<int> lf,rg;
	for (int c:v)
	{
		if(lft<rgt){
			lf.push_back(c);
			lft+=c;
		}
		else{
			rg.push_back(c);
			rgt+=c;
		}
	}
	reverse(rg.begin(), rg.end());
	for(int i:rg)
		lf.push_back(i);
	vector<int> fn;
	for(int i=1;i<=lf.size();i++){
		for(int j=0;j<lf[i-1];j++)
			fn.push_back(i);
	}
	int ans=0;
	int tot=0;
	for(int i=0;i<fn.size();i++)
		tot+=fn[i];
	ans=tot;
	for(int i=1;i<fn.size();i++){
		tot--;
		if(fn[i]!=fn[i-1])
			tot-=(fn.size())-i;
		ans+=tot;
	}
	while(q--){
		int l,r;
		cin>>l>>r;
		cout<<ans<<endl;
	}
}

signed main(){
	int t=1;
	// cin>>t;
	while(t--)
		solve();
	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...