本文共 722 字,大约阅读时间需要 2 分钟。
shell排序变体
#includeusing namespace std;const int mod = 1000000007;int solve(vector & data,int l,int r){ if(l>=r-1) return 0; int mid = (l+r+1)/2; int ans1 = solve(data,l,mid); int ans2 = solve(data,mid,r); int i = l; int j = mid; int ans = ans1 + ans2; while(i data[j]){ ans = (ans + (r-j))%mod; i++; }else{ j++; } } sort(data.begin()+l,data.begin()+r,greater ()); return ans;}int InversePairs(vector data) { int l = data.size(); return solve(data,0,l);}int main(){ int a[] = {1,2,3,4,5,6,7,0}; vector v(a,a+8); printf("%d\n",InversePairs(v)); return 0;}
转载地址:http://iywji.baihongyu.com/