蒟蒻40分代码求助
查看原帖
蒟蒻40分代码求助
549035
liuyuhanyyds楼主2021/11/3 18:27
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5+7;
struct lyh
{
	long long num,id;
}a[maxn];
long long n,ls[maxn],tree[maxn],ans=0;
bool cmp(lyh x,lyh y)
{
	return x.num<y.num;
}
long long lowbit(long long x)
{
	return x&(-x);
}
void updata(long long i,long long k)
{
	while(i<=n)
	{
		tree[i]+=k;
		i+=lowbit(i);
	}
}
long long getsum(long long i)
{
	long long res=0;
	while(i>0)
	{
		res+=tree[i];
		i-=lowbit(i);
	}
	return res;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i].num,a[i].id=i;
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)	ls[a[i].id]=i;
	for(int i=1;i<=n;i++)
	{
		updata(ls[i],1);
		ans+=(i-getsum(ls[i]));
	}
	cout<<ans;
	return 0;
}
2021/11/3 18:27
加载中...