我看好多题解离散化都是这样
bool cmp(point q, point w){
if (q.val == w.val)
return q.num < w.num;
return q.val < w.val;
}
但是本人这样离散化也可以通过,研究了一下不知道原因,还请各位大佬帮帮忙
signed main() {
cin >> n; int ans = 0;
for (int i = 1; i <= n; i++) {
cin >> a[i];
b[i] = a[i];
}
sort(b + 1, b + n + 1);
for (int i = 1; i <= n; i++) {
a[i] = lower_bound(b + 1, b + n + 1, a[i]) - b;
}
//前
/* for (int i = 1; i <= n; i++) {
add(a[i], 1);
ans += i - sum(a[i]);
}*/
//后
for (int i = n; i >= 1; i--) {
add(a[i], 1);
ans += sum(a[i]-1);
}
cout << ans << endl;
}