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;
}