rt.WA?TLE?????蒟蒻求条QWQ
记录
code:
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[500005], t[500005];
long long ans;
void merge_sort(int a[], int l, int r) {
if (l == r) {
return;
}
int mid = (l + r) >> 1;
merge_sort(a, l, mid);
merge_sort(a, mid + 1, r);
for (int i = 1, j = 1, k = mid + 1; i <= r; i ++) {
if (j == mid + 1) {
t[i] = a[k ++];
} else if (k == r + 1) {
t[i] = a[j ++];
ans += k - mid - 1;
} else if (a[j] <= a[k]) {
t[i] = a[j ++];
ans += k - mid - 1;
} else {
t[i] = a[k ++];
}
}
for (int i = l; i <= r; i ++) {
a[i] = t[i];
}
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i ++) {
cin >> a[i];
}
merge_sort(a, 1, n);
cout << ans;
return 0;
}