Cod sursa(job #1804960)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 13 noiembrie 2016 12:28:24
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>

using namespace std;

int aib[15100],n;

void aib_update(int poz,int x)
{
    for(int i=poz;i<=n;i+=i&(-i)) aib[i]+=x;
}

int aib_query(int poz)
{
    int s=0;
    for(int i=poz;i>=1;i-=i&(-i)) s+=aib[i];
    return s;
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    int m,x,tip,poz;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        aib_update(i,x);
    }
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&tip,&poz,&x);
        if(tip==0) aib_update(poz,-x);
        else printf("%d\n",aib_query(x)-aib_query(poz-1));
    }
    return 0;
}