Submission #478758

#TimeUsernameProblemLanguageResultExecution timeMemory
478758kshitij_sodaniDiversity (CEOI21_diversity)C++14
64 / 100
285 ms25516 KiB
//#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define mp make_pair
#define pb push_back
#define a first 
#define b second
#define endl '\n'
//vector<llo> adj[200001];
llo it[300001];
llo dp[300001];//[30001];
llo dp2[300001];
llo pre[300001];
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	llo n,q;
	cin>>n>>q;
	map<llo,llo> ss;
	for(llo i=0;i<n;i++){
		cin>>it[i];
		ss[it[i]]++;
	}
	vector<llo> tt;
	for(auto j:ss){
		tt.pb(j.b);
	}
	sort(tt.begin(),tt.end());
	for(llo i=1;i<=tt.size();i++){
		pre[i]=pre[i-1]+tt[i-1];
	}
	llo m=tt.size();
	llo ans=m*n*(n+1)-(m-1)*n;

	vector<llo> ee;
	for(llo i=0;i<tt.size();i+=2){
		ee.pb(tt[i]);
	}
	for(llo i=tt.size()-1;i>=0;i--){
		if(i%2==1){
			ee.pb(tt[i]);
		}
	}
	llo su=0;
	//cout<<ans<<endl;
	for(llo i=0;i+1<ee.size();i++){
		su+=ee[i];
		ans-=su*su;
		ans-=(n-su)*(n-su);
	}

/*	for(auto j:ee){
		cout<<j<<",";
	}
	cout<<endl;*/
	//cout<<ans<<endl;
	/*if(m==1){

	}
	else{
		for(llo i=0;i<tt.size();i++){
			for(llo j=0;j<=n;j++){
				dp[j]=-(llo)1e18;
			}
			if(i==0){
				dp[tt[0]]=tt[0]*tt[0]+(n-tt[0])*(n-tt[0]);
			}
			else{
				for(llo j=0;j<=n;j++){
					llo cur=j+pre[tt.size()]-pre[i];
					llo su=0;
					su+=cur*cur;
					su+=(n-cur)*(n-cur);
					if(cur==n or cur==0){
						su=0;
					}
					dp[j]=max(dp[j],dp2[j]+su);
					if(j>=tt[i]){
						llo cur=j;
						llo su=0;
						su+=cur*cur;
						su+=(n-cur)*(n-cur);
						if(cur==n or cur==0){
							su=0;
						}
						dp[j]=max(dp[j],dp2[j-tt[i]]+su);
					}
				}
			}
			for(llo j=0;j<=n;j++){
				dp2[j]=dp[j];
			}
		}
		llo ma=0;
		for(llo i=0;i<=n;i++){
			ma=max(ma,dp[i]);
		}
		ans-=ma;
	}*/
	ans/=2;


	//divide ans/2
	while(q--){
		llo l,r;
		cin>>l>>r;
		l--;
		r--;

		cout<<ans<<endl;
	}
 
 
 
	return 0;
}

Compilation message (stderr)

diversity.cpp: In function 'int main()':
diversity.cpp:31:15: warning: comparison of integer expressions of different signedness: 'llo' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |  for(llo i=1;i<=tt.size();i++){
      |              ~^~~~~~~~~~~
diversity.cpp:38:15: warning: comparison of integer expressions of different signedness: 'llo' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |  for(llo i=0;i<tt.size();i+=2){
      |              ~^~~~~~~~~~
diversity.cpp:48:17: warning: comparison of integer expressions of different signedness: 'llo' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |  for(llo i=0;i+1<ee.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...