RE求助
查看原帖
RE求助
1202709
joker_xzm楼主2024/6/25 15:44
#include<bits/stdc++.h>
using namespace std;
const int MAXN=5000010;
#define lowbit(x) (x&(-x))
#define int long long
int n,m;
int ans=0;
int a[MAXN],tree[MAXN];
int add(int x,int k){
	for(int i=x;i<=n;i+=lowbit(i)){
		tree[i]+=k;
	}
}
int ask(int x){
	int sum=0;
	for(int i=x;i;i-=lowbit(i)){
		sum+=tree[i];
	}
	return sum;
}int p[MAXN];
bool cmp(int x,int y){
	return a[x]<a[y];
}
//
//int search(int L,int R){
//	for(int i=L-1;i;i-=lowbit(i)){
//		ans-=tree[i];
//	}
//	for(int i=R;i;i-=lowbit(i)){
//		ans+=tree[i];
//	}
//	return 0;
//}
signed main(){
//	cin>>n;
	scanf("%lld",n);
	for(int i=1;i<=n;i++){
		cin>>a[i];
		p[i]=i;
	}
//	for(int i=1;i<=m;i++){
//		int cho,x,y;
//		cin>>cho>>x>>y;
//		if(cho==1){
//			add(x,y);
//		}
//		else{
//			ans=0;
//			search(x,y);
//			cout<<ans<<endl;
//		}
//	}
	stable_sort(p+1,p+n+1,cmp);
	for(int i=1;i<=n;i++){
		a[p[i]]=i;
	}
	for(int i=n;i>=1;i--){
		ans+=ask(a[i]-1);
		add(a[i],1);
	}
//	cout<<ans;
	scanf("%lld\n",ans);
	return 0;
}

问下各位大佬为什么RE啊?

2024/6/25 15:44
加载中...