hdu 2838 树状数组求逆序数及交换位置产生移动的数的和 (二)

2014-11-24 00:59:37 · 作者: · 浏览: 8
k1=i-sum_count(x);///到此为止 比x大的个数;
///sum_count[x] 为输入i个数的时候 x之前有sum_count[x]个比x小的数 用i相减则为大于x的个数
if(k1!=0)
{
k2=sum(n)-sum(x);///到此为止 比x大的数的和;
ans+=x*k1+k2;///到此为止 比x大的数与x交换之后的和;
}
}
printf("%I64d\n",ans);
}
return 0;
}