有问题
查看原帖
有问题
307024
zyf123918楼主2020/8/5 00:25
using namespace std;
const int N=1e5+10;
int n;
int s[N],t[N];
struct kl{
	long long v,x;
}a[N];
int lowbit(int x){
	return x&(-x);
}
void add1(int x,int k){
	for(int i=x;i<N;i+=lowbit(i)){
		s[i]+=k;
	}
}
void add2(int x,int k){
	for(int i=x;i<N;i+=lowbit(i)){
		t[i]+=k;
	}
}
int ask1(int x){
	int res=0;
	for(int i=x;i;i-=lowbit(i)) res+=s[i];
	return res;
}
int ask2(int x){
	int res=0;
	for(int i=x;i;i-=lowbit(i)) res+=t[i];
	return res;
}
int cmp(kl x,kl y){
	return x.v<y.v;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i].v>>a[i].x;
	sort(a+1,a+1+n,cmp);
	long long op=0,res=0;
	for(int i=1;i<=n;i++){ 
		int nu=ask1(a[i].x),su=ask2(a[i].x);
		res+=(nu*a[i].x-su)*a[i].v;
		res+=((op-su)-(i-1-nu)*a[i].x)*a[i].v;
		add1(a[i].x,1);
		add2(a[i].x,a[i].x);
		op+=a[i].x;
	}
	cout<<res<<endl;
	return 0;
}
struct kl{
	long long v,x;
}a[N];

这里为什么要定义成long long 明明题上的数据木有爆 啊

2020/8/5 00:25
加载中...