Cod sursa(job #1512738)

Utilizator sorynsooSorin Soo sorynsoo Data 28 octombrie 2015 16:20:00
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
using namespace std;
#define MAXN 15000
int n,m,x,y,z,i;
int s[MAXN];
int nxt(int x)
{
    return (x^(x-1)&x);
}
void adauga_datorie(int poz, int val)
{
    for(int i=poz; i<=n; i+=nxt(i))
        s[i]+=val;
}
void scade_datorie(int poz, int val)
{
    for(int i=poz; i<=n; i+=nxt(i))
        s[i]-=val;
}
int sum(int poz)
{
    int nrs=0;
    for(int i=poz; i>=1; i-=nxt(i))
        nrs+=s[i];
    return nrs;
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1; i<=n; i++)
    {
        scanf("%d",&x);
        adauga_datorie(i,x);
    }
    for(i=1; i<=m; i++)
    {
        scanf("%d%d%d",&x,&y,&z);
        if(!x)
            scade_datorie(y,z);
        else
            printf("%d\n",sum(z)-sum(y-1));
    }
}