RE爆0,求助
  • 板块P1908 逆序对
  • 楼主yonghang
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/23 13:49
  • 上次更新2023/10/23 20:47:40
查看原帖
RE爆0,求助
934196
yonghang楼主2023/3/23 13:49
#include<bits/stdc++.h>
using namespace std;
int a[1000010];
int c[1000010];
int n,m;
int lowbit(int x){
	return x&-x;
}
void add(int x)
{
	while(x<=100010)
	{
		c[x]++;
		x+=lowbit(x);
	}
}
long long summ(int x)
{
	long long ans=0;
	while(x>0)
	{
		ans+=c[x];
		x-=lowbit(x);
	}
	return ans;
}
int main()
{
	long long ha=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		a[i]++;
	}
	for(int i=n;i>=1;i--)
	{
		ha+=summ(a[i]-1);
		add(a[i]);
	}
	printf("%lld",ha);
}
2023/3/23 13:49
加载中...