一个智障的求逆序对的问题

来源:互联网 发布:java char 编辑:程序博客网 时间:2024/05/08 05:56
#include<iostream>#include<algorithm>#include<cstring>#include<string.h>#define ll long long using namespace std;const int N = 5010;int bit[N];int n;void add(int i){while (i <= n) {bit[i] += 1;i += (i&-i);}}int sum(int i){int s = 0;while (i>0){s += bit[i];i -= (i&-i);}return s;}int main(){while (cin>>n){ll result = 0;int a[N];memset(bit, 0, sizeof(bit));for (int i = 1; i <= n; i++) {cin >> a[i],a[i]++;add(a[i]);result+= i - sum(a[i]);}ll ans = result;for (int i = 1; i <= n; i++) {result = result + n - 2 * a[i] + 1;ans = min(ans, result);}cout << ans << endl;}return 0;}

原创粉丝点击