#include #include using namespace std; #define M 100005 struct node { __int64 a,b; int num1,num2; }t[M]; int cmpa(node &p,node &q) { if(p.a0) { s+=c[x]; x-=lowbit(x); } return s; } __int64 getsumd(int x) { __int64 s=0; while(x>0) { s+=d[x]; x-=lowbit(x); } return s; } int main() { while(scanf("%d",&n)>0) { memset(c,0,sizeof(c)); memset(d,0,sizeof(d)); int i; for(i=1;i<=n;i++) { scanf("%I64d%I64d",&t[i].a,&t[i].b); } sort(t+1,t+1+n,cmpa); for(i=1;i<=n;i++) { if(i!=1&&t[i].a==t[i-1].a) t[i].num1=t[i-1].num1; else t[i].num1=i; } int max=t[n].num1; sort(t+1,t+1+n,cmpb); for(i=1;i<=n;i++) { if(i!=1&&t[i].b==t[i-1].b) t[i].num2=t[i-1].num2; else t[i].num2=i; } sort(t+1,t+1+n,cmpn); for(i=1;i<=n;i++) { updatac(t[i].num1,t[i].num1); updatad(t[i].num1,1); } __int64 sum=0,m=n,tmp1,tmp2; for(i=1;i