码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 4911: Inversion

时间:2018-07-11 17:09:00      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:name   bit   while   font   ++   pre   turn   end   inf   

#include <bits/stdc++.h>
using namespace std;
const int N = 100005, INF = INT_MAX;
int n, k, A[N], L[N], R[N];
long long cnt;
void Merge(int p, int q, int r) {
int n1 = q - p + 1, n2 = r - q;
for (int i = 0; i < n1; i++)
L[i] = A[i + p];
for (int i = 0; i < n2; i++)
R[i] = A[i + q + 1];
L[n1] = INF;
R[n2] = INF;
for (int i = 0, j = 0, k = p; k <= r; k++)
if (L[i] <= R[j])
A[k] = L[i++];
else {
A[k] = R[j++];
cnt += n1 - i;
}
}
void MergeSort(int p, int r) {
if (p < r) {
int q = (p + r) / 2;
MergeSort(p, q);
MergeSort(q + 1, r);
Merge(p, q, r);
}
}
int main() {
ios::sync_with_stdio(false);
while (cin >> n >> k) {
cnt = 0;
for (int i = 0; i < n; i++)
cin >> A[i];
MergeSort(0, n - 1);
cout << max(0LL, cnt - k) << endl;
}
return 0;
}

HDU 4911: Inversion

标签:name   bit   while   font   ++   pre   turn   end   inf   

原文地址:https://www.cnblogs.com/zjnu/p/9295287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!