样例2WA求助
查看原帖
样例2WA求助
499140
3wykx楼主2023/12/20 14:08
#include<bits/stdc++.h>
using namespace std;
int tree[30005];
long long ans;
int len,n,a[30005],le[30005],re[30005],t[30005];
int lowbit(int x){return x&(-x);}
void add(int x,int k){
	for(int i=x;x<=n;x+=lowbit(x))
		tree[i]+=k;
}
int sum(int x){
	int res=0;
	while(x>0){
		res+=tree[x];
		x-=lowbit(x);
	}
	return res;
}
inline int query(int val){
	return lower_bound(t+1,t+1+len,val)-t;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		t[i]=a[i];
	}
	sort(t+1,t+1+n);
	len=unique(t+1,t+1+n)-t-1;
	for(int i=1;i<=n;i++){
		add(query(a[i]),1);
		le[i]=sum(query(a[i])-1);
	}
	memset(tree,0,sizeof(tree));
	for(int i=n;i>=1;i--){
		add(query(a[i]),1);
		re[i]=n-i-(sum(query(a[i]-1)));
	}
	for(int i=2;i<n;i++)ans+=le[i]*re[i];
	cout<<ans<<endl;
	return 0;
} 
2023/12/20 14:08
加载中...