- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- template<size_t N,typename T=int>
- class BIT
- {
- private:
- T bit[N];
- const int Lowbit(const int &x)
- {
- return x&(-x);
- }
- public:
- size_t n;
- T a[N];
- void Build()
- {
- for(int i=1;i<=n;++i)
- {
- bit[i]=a[i];
- for(int j=i-1;j>i-Lowbit(i);j-=Lowbit(j))
- bit[i]+=bit[j];
- }
- }
- void Update(const int i,const int _delta)
- {
- a[i]+=_delta;
- for(int j=i;j<=n;j+=Lowbit(j))
- bit[j]+=_delta;
- }
- const T GetSum(const int &k)
- {
- T ans(0);
- for(int i=k;i>0;i-=Lowbit(i))
- {
- ans+=bit[i];
- }
- return ans;
- }
- const T GetSum(const int &l,const int &r)
- {
- return GetSum(r)-GetSum(l-1);
- }
- };
- BIT<1000000,int> bit;
- int main()
- {
- scanf("%d",&bit.n);
- for(int i=1;i<=bit.n;++i)
- {
- scanf("%d",&bit.a[i]);
- }
- bit.Build();
- int m;
- scanf("%d",&m);
- for(int i=1,a,b,c;i<=m;++i)
- {
- scanf("%d%d%d",&a,&b,&c);
- if(a==1)
- {
- bit.Update(b,c);
- }
- else
- {
- printf("%d\n",bit.GetSum(b,c));
- }
- }
- }