Cod sursa(job #2182899)

Utilizator alexradu04Radu Alexandru alexradu04 Data 22 martie 2018 18:14:00
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

using namespace std;
int aib[100000];
int sp[100005];
int v[100005];
int n;
void update(int poz,int val)
{
    for(;poz<=n;poz+=poz&(-poz))
        
        aib[poz]+=val;
}
int query(int poz)
{
    int s=0;
    for(;poz>0;poz-=poz&(-poz))
        s+=aib[poz];
    return s;
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    int m,cer,a,b,val;
    scanf("%d %d",&n ,&m);
    for(int i=1;i<=n;++i)
        {
            scanf("%d",&v[i]);
            update(i,v[i]);
        }
    for(int i=1;i<=m;++i)
    {
        scanf("%d",&cer);
        if(cer==0)
        {
            scanf("%d %d",&a,&b);
            update(a,-b);
        }
        if(cer==1)
        {
            scanf("%d %d",&a,&b);
            printf("%d\n",query(b)-query(a-1));
        }
        
    }
    return 0;
}