#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;
}
树状数组模板
最新推荐文章于 2024-11-13 20:46:07 发布