Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- long long n, a[100500], m, l, r, inf = 1000000000, t[300500], mx = -10000000000;
- void build(int v, int L, int R){
- if(L == R){
- t[v] = a[L];
- return;
- }
- int mid = (L + R) / 2;
- build(v * 2, L, mid);
- build(v * 2 + 1, mid + 1, R);
- t[v] = t[v*2] + t[v*2+1];
- }
- int get_sum(int v, int L, int R, int l, int r){
- if(l <= L && R <= r){
- return t[v];
- }
- if(R < l || L > r){
- return -inf;
- }
- int mid = (L + R) / 2;
- return get_sum(v * 2, L, mid, l, r)+get_sum(v * 2 + 1, mid + 1, R, l, r);
- }
- int main(){
- cin >> n;
- for(int i = 1; i <= n; i++){
- cin >> a[i];
- }
- build(1, 1, n);
- cin >> m;
- for(int i = 1; i <= m; i++){
- cin >> l >> r;
- mx = max(mx, get_sum(1, l, r, 1, n));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement