#include<bits/stdc++.h>
#define XD 114514
#define MAXN 50010
using namespace std;
int n;
struct QWQ{
int v,x;
} a[MAXN];
bool cmp1(QWQ x,QWQ y){
if(x.v!=y.v) return x.v<y.v;
return x.x<y.x;
}
int len;
struct QAQ{
int v,x,num;
} b[MAXN];
bool cmp2(QAQ x,QAQ y){
return x.x<y.x;
}
unsigned long long ans=0;
void cdq(int l,int r){
if(l==r) return;
int mid=l+r>>1;
cdq(l,mid);cdq(mid+1,r);
sort(b+l,b+mid+1,cmp2);
sort(b+mid+1,b+r+1,cmp2);
int j=l;
unsigned long long nem=0,nem2=0;
for(int i=l;i<=mid;i++) nem2+=b[i].x;
for(int i=mid+1;i<=r;i++){
while(b[j].x<b[i].x and j<=mid){
nem+=b[j].x;
j++;
}
ans+=1ll*b[i].v*(b[i].x*(j-l)-nem+nem2-nem-b[i].x*(mid-j+1))*b[i].num;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].v>>a[i].x;
sort(a+1,a+1+n,cmp1);
int nem=0;
for(int i=1;i<=n;i++){
nem++;
if(a[i].v!=a[i+1].v or a[i].x!=a[i+1].x){
len++;
b[len].v=a[i].v;
b[len].x=a[i].x;
b[len].num=nem;
nem=0;
}
}
cdq(1,len);
// for(int i=1;i<=len;i++){
// cout<<b[i].v<<" "<<b[i].x<<" "<<b[i].ans<<'\n';
// }
cout<<ans;
return 0;
}
好像并不是爆 long long 的问题。求调QWQ。