Solution
为了让逆序对数量尽量多,每次要交换 \(i\) 和 \(n - i + 1\),然后把每一次的结果累加起来,答案就是 \(\sum_{i=1}^{\min\left(\lfloor{\frac{n}{2}}\rfloor,k\right)}\left(2 \times \left(n - i + 1\right) + 1\right)\)。
Code
完整代码如下
#include <bits/stdc++.h>
using namespace std;
int n, k;
long long ans = 0;
int main() {scanf("%d%d", &n, &k);for (int i = 1; i * 2 <= n && i <= k; i++) ans += 2 * (n - 2 * i) + 1;printf("%lld\n", ans);return 0;
}