#include <iostream>
#include <cstdio>
using namespace std;
#define mid(x,y) ((x&y) + ((x^y)>>1))
const int N = 500005;long long a[N];
long long ans; // 记录逆序对个数
void merge_sort(int l, int r) {if(l >= r) return;int m = mid(l,r);merge_sort(l, m);merge_sort(m+1, r);long long *arr = new long long[r-l+1];int i = l, j = m+1, k = 0;while(i <= m && j <= r) {if(a[i] <= a[j]) {arr[k++] = a[i++];}else {ans += (m - i + 1);arr[k++] = a[j++];}}while(i <= m) arr[k++] = a[i++];while(j <= r) arr[k++] = a[j++];for(int i = l; i <= r; i++) {a[i] = arr[i-l];}delete []arr;
}
int main() {int n;while(cin >> n, n) {for(int i = 0; i < n; i++) {cin >> a[i];}ans = 0;merge_sort(0, n-1);cout << ans << endl;}return 0;
}
详细解决方案
[算法] doj 1067 归并法求逆序对 Ultra-QuickSort
热度:52 发布时间:2023-12-14 09:42:07.0
相关解决方案
- Oracle 10g WIn7, OracleOraDb10g_home1TNSListener 启动时报错 1067 ?该怎么解决
- 施用32位客户端 error 1067
- Windows 无法启动 SQL Server (MSSQLSERVER) 服务(位于 本地计算机 上)。异常 1067: 进程意外终止
- 发生系统异常 1067
- 无法启动MYSQL服务”1067 进程意外终止”解决方法——汇总及终极方法
- 【mysql 服务启动失败,报 1067 异常】 的可能原因及解决方案
- 1067. 试密码(20) PAT
- ACdream 1067:Triangles
- PAT(Advanced) 1067 Sort with Swap(0, i)(25 分)
- 2016级算法第一次上机——E ModricWang's QuickSort
- XTU OJ 1067 IO5
- PAT--1067 试密码 (C语言)
- poj2299Ultra-QuickSort(树状数组+离散化)
- 从低版本的mysql导入到5.7以后的mysql会出现的问题,导入sql报错“Unknown error 1067”
- [算法] doj 1067 归并法求逆序对 Ultra-QuickSort
- poj 1067 和 poj 2234 取石子游戏
- 排序算法-快速排序(QuickSort)
- 1067 试密码 (20 分)
- Ultra Edit中的两个正则表达式
- poj2299Ultra-QuickSort(归并求逆序数)
- 一个快速排序的实现 An Algorithm for QuickSort
- POJ2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- 1067?试密码?(20分)
- 1067?Sort with Swap(0, i)?(25分)
- 1067:整数的个数