classBIT{private:staticconstint N =100010;int c[N]={0};intlowbit(int x){return x&-x;}public:voidupdate(int x){while(x<N){
c[x]++;
x +=lowbit(x);}}intask(int x){int res =0;while(x){
res += c[x];
x -=lowbit(x);}return res;}};classSolution{public:intreversePairs(vector<int>& nums){
set<long> st;for(long x:nums){
st.insert(x);
st.insert(2*x);}
unordered_map<long,int> f;// 从1开始int index =1;for(long x:st){
f[x]= index++;}
BIT bit;int ans =0;for(long x:nums){int left = f[2*x];
ans += bit.ask(index)-bit.ask(left);
bit.update(f[x]);}return ans;}};