Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<cstdio>#include<cstring>#include<iostream>using namespace std;long long ans=0;int a[100001],c[100001];void merge(int l,int r){if(l>=r) return;merge(l,(l+r>>1));merge((l+r>>1)+1,r);int p1=l,mid=l+r>>1,p2=mid+1,p3=l;while(p1<=mid&&p2<=r){if(a[p1]>a[p2]){ans+=mid-p1+1;c[p3++]=a[p2++];}else c[p3++]=a[p1++];}while(p1<=mid) c[p3++]=a[p1++];while(p2<=r) c[p3++]=a[p2++];memcpy(a+l,c+l,(sizeof(int))*(r-l+1));}char str[8000000],*p=str;inline int read(){int x=0;while(!isdigit(*p)) p++;while(isdigit(*p)) x=x*10+*p++-48;return x;}int main(){fread(str,1,8000000,stdin);int n=read();