你加钠了吗 • 11天前
using namespace std;
int a[1000001];
struct in {
int l, r, sum;
}; int ans = 0;
in get(int l, int r) {
if (l == r) {
ans = max(ans, a[l]);
return {a[l], a[l], a[l]};
}
int mid = (l + r) / 2;
in i = get(l, mid);
in j = get(mid + 1, r);
ans = max(ans, i.r + j.l);
ans = max(ans, i.sum + j.l);
ans = max(ans, i.r + j.sum);
return{
max(i.l, i.sum + j.l),
max(j.r, j.sum + i.r),
i.sum + j.sum
};
}
signed main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
get(1, n);
cout << ans;
}
评论:
请先登录,才能进行评论