Cod sursa(job #2182837)

Utilizator MoldovanAndrei1Moldovan Andrei MoldovanAndrei1 Data 22 martie 2018 17:40:31
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
using namespace std;
long long aib[1000005];
int v[1000005];
int n;
void update(int poz,int val)
{
    for(;poz<=n;poz+=poz&-poz)
        aib[poz]+=val;
}
long long  query(int poz)
{
    int s=0;
    for(;poz>0;poz-=poz&-poz)
        s=s+aib[poz];
        return s;
}
int sp[100005];
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    int i,m;
    scanf("%d",&n);
        scanf("%d",&m);
    for(i=1;i<=n;i++){scanf("%d",&v[i]);update(i,v[i]);}

    int p1;
    for(i=1;i<=m;i++)
    {
        scanf("%d",&p1);
        if(p1==0)
        {
            int l;
            scanf("%d%d",&p1,&l);
            l*=-1;
            update(p1,l);
            continue;
        }
        int r;
        scanf("%d%d",&p1,&r);
         int s1=query(r),s2=query(p1-1);
        printf("%d\n",s1-s2);
    }
    return 0;
}