挺有意思的一题,就当积累一下吧。
做法
枚举i和k会超时,那就只枚举j。
#include<bits/stdc++.h>
using namespace std;
int n;
int a300010;
vector<int> v300010;
int main(){
scanf("%d",&n);
map<int,int> mp;//数的种类
for(int i=1;i<=n;i++){
scanf("%d",&ai);
va\[i].push_back(i);//存下标
mpa\[i]++;
}
long long ans=0;
for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++){
for(int i=1;i<vit-\>first.size();i++){
ans+=1ll*(vit-\>firsti-vit-\>firsti-1-1)*i*(vit-\>first.size()-i);
//(vit-\>firsti-vit-\>firsti-1-1)是不同的j,i是在aj前面ai的个数,(vit-\>first.size()-i)是在aj前面ai的个数
}
}
cout<<ans<<endl;
}