50pts求助
查看原帖
50pts求助
1140668
___W___Z___L___PVP楼主2024/12/15 20:07
#include <bits/stdc++.h>
using namespace std;
#define int long long
struct rode{
    int v,ii;
}a[100009];
int n, b[1000000009], c[100009], sum;
int lowbit(int x) {
	return x & -x;
}

void add(int x, int k) {
	while (x <= n) {
		c[x] += k;
		x += lowbit(x);
	}
}

int Sum(int x) {
	int ssum = 0;
	while (x > 0) {
		ssum += c[x];
		x -= lowbit(x);
	}
	return ssum;
}
bool cmp(rode x,rode y){
    return x.v<y.v;
}
signed main() {
	cin >> n;
	for (int i = 1; i <= n; i++){
		cin >> a[i].v;
		add(i,a[i].v);
		a[i].ii=i;
	}
	stable_sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
	    b[a[i].v]=i;
	}
	for(int i=2;i<=n;i++){
	    sum=max(sum,Sum(b[i])+Sum(b[i-1]));
	}
	cout<<sum;


	return 0;
}
2024/12/15 20:07
加载中...