4392: GESP C++ 六级 4小杨的握手问题202309
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述
样例输入 复制
4
2 1 3 0
样例输出 复制
2
提示
#include <iostream> using namespace std; int num[300000]; int tmp[300000]; long long merge(int l, int r) { if (l + 1 == r) return 0; int m = (l + r) / 2; long long res = merge(l, m) + merge(m, r); for (int i = l, j = m, k = l; k < r; k++) { if (j == r || (i < m && num[i] > num[j])) { tmp[k] = num[i]; i++; } else { tmp[k] = num[j]; j++; res += m - i; } } for (int k = l; k < r; k++) num[k] = tmp[k]; return res; } int main() { int n = 0; cin >> n; for (int i = 0; i < n; i++) cin >> num[i]; cout << merge(0, n) << endl; return 0; }