50分求助,后面10个点WA了
查看原帖
50分求助,后面10个点WA了
399508
kanchui666楼主2022/8/10 18:39
#include<bits/stdc++.h>
using namespace std;
const int N=500005;
int n,ans;
int a[N],b[N],t[N];
int lowbit(int x){
	return x&(-x);
}
void add(int x,int y){
	for(int i=x;i<=n;i+=lowbit(i))
	{
		t[i]+=y;	
	}
}
int query(int x){
	int anss=0; 
	for(int i=x;i;i-=lowbit(i))
	{
		anss+=t[i];
	}
	return anss;
}
int cmp(int x,int y){
	return a[x]<a[y];
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		b[i]=i;
	}
	stable_sort(b+1,b+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		a[b[i]]=i;
	}
	for(int i=1;i<=n;i++)
	{
		add(a[i],1);	
		ans+=(i-query(a[i]));
	} 
	printf("%d",ans);
	return 0;	
} 
2022/8/10 18:39
加载中...