Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef pair<ll,ll> pll;
- #define fastread() (ios_base:: sync_with_stdio(false),cin.tie(NULL))
- #define fi first
- #define se second
- #define pb push_back
- ll const MOD=1000000007;
- const int M= 1e5 +10;
- #define eb emplace_back
- int st[4*M] ,lazy[4*M] ,ara[M];
- void build(int si , int ss , int se)
- {
- if(ss == se)
- {
- st[si] = ara[ss];
- return;
- }
- int mid = (ss + se)/2;
- build(2*si , ss , mid);
- build(2*si+1 , mid+1 , se);
- st[si] = st[2*si] + st[2*si+1];
- }
- int query(int si , int ss , int se , int qs , int qe)
- {
- if(qe < ss || qs> se)
- return 0;
- if(ss>=qs && se<=qe)
- return st[si];
- int mid = (ss + se)/2;
- int l = query(2*si , ss , mid , qs , qe);
- int r = query(2*si+1 , mid+1 , se , qs , qe);
- return l + r;
- }
- void update(ll si,ll ss,ll se,ll i,ll newv)
- {
- if(i>se || i<ss)
- {
- return ;
- }
- if(i==ss && i==se)
- {
- st[si]=newv;
- return;
- }
- ll l=si*2;
- ll r=l+1;
- ll mid=(ss+se)/2;
- update(l,ss,mid,i,newv);
- update(r,mid+1,se,i,newv);
- st[si]=st[l]+st[r];
- }
- int main()
- {
- int n , q , l , r;
- cin>>n;
- for(ll i=1;i<=n;i++)
- cin>>ara[i];
- cin>>q;
- build(1 , 1 , n);
- while(q--)
- {
- cin>>l>>r;
- cout<<query(1 , 1 , n , l+1 , r+1)<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement