| 8 | ll x, sum[SIZE], dp[SIZE], dpl[SIZE], dpr[SIZE]; |
| 9 | |
| 10 | void pull(int i){ |
| 11 | dpl[i] = max(dpl[2*i], sum[2*i] + dpl[2*i+1]); |
| 12 | dpr[i] = max(dpr[2*i+1], sum[2*i+1] + dpr[2*i]); |
| 13 | dp[i] = max(dpr[2*i] + dpl[2*i+1], max(dp[2*i], dp[2*i+1])); |
| 14 | sum[i] = sum[2*i] + sum[2*i+1]; |
| 15 | } |
| 16 | |
| 17 | void build(int i, int l, int r){ |
| 18 | lo[i] = l; hi[i] = r; |