P5094WA求调 悬赏3rmb
  • 板块灌水区
  • 楼主Const_AKer
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/10/25 13:58
  • 上次更新2024/10/25 16:18:39
查看原帖
P5094WA求调 悬赏3rmb
1038686
Const_AKer楼主2024/10/25 13:58

支持微信支付

#include<bits/stdc++.h>
#define int long long
#define lowbit(x) (x&(-x))
using namespace std;
const int N=100005;
int n,i,ans,cntl,suml,cntr,sumr,s;
struct cow
{
	int v,x;
	friend bool operator <(cow a,cow b)
	{
		return a.v<b.v;
	}
}a[N];
struct bit
{
	int t[N];
	void add(int p,int x)
	{
		for(;p<=n;p+=lowbit(p)) t[p]+=x;
	}	
	int ask(int p)
	{
		int y=0;
		for(;p;p-=lowbit(p)) y+=t[p];
		return y;
	}
}cnt,sum;
signed main()
{
	ios::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr);
	cin>>n;
	for(i=1;i<=n;i++) cin>>a[i].v>>a[i].x;
	sort(a+1,a+1+n);
	for(i=1;i<=n;i++)
	{
		cntl=cnt.ask(a[i].x);
		suml=sum.ask(a[i].x);
		cntr=i-1-cntl;
		sumr=s-suml;
		cerr<<cntl<<' '<<cntr<<' '<<suml<<' '<<sumr<<'\n';
		ans+=(a[i].x*cntl-suml)*a[i].v;
		ans+=(sumr-a[i].x*cntr)*a[i].v;
		
		cnt.add(a[i].x,1);
		sum.add(a[i].x,a[i].x);
		s+=a[i].x;
	}
	cout<<ans;
	return 0;
}
2024/10/25 13:58
加载中...