您的位置:首页 > 其它

树状数组模板

2017-10-20 17:57 176 查看
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string.h>
#define ll long long
using namespace std;

const int N = 5010;
int bit
;
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
;
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: