Cod sursa(job #2497709)

Utilizator Vladv01Vlad Vladut Vladv01 Data 23 noiembrie 2019 10:25:56
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

int n,m,dat[100005],c,q,p,t,v;


int zero(int x)
{
    return (x^(x-1))&x;
}

void aib(int t,int v)
{
    for(int i=t;i<=n;i+=zero(i))
    {
        dat[i]+=v;
    }
}


void scad(int t,int v)
{
    for(int i=t;i<=n;i+=zero(i))
    {
        dat[i]-=v;
    }
}

int suma1(int p)
{
    int s=0;
    for(int i=p;i>0;i-=zero(i))
        s+=dat[i];
     return s;
}


int main()
{
    f>>n>>m;
    int x;
    for(int i=1;i<=n;i++)
    {
        f>>x;
        aib(i,x);

    }

    for(int i=1;i<=m;i++)
    {
        f>>c;
        if(c==1)
        {
            f>>p>>q;
            int s1,s2;
            s1=suma1(p-1);
            s2=suma1(q);
            g<<s2-s1<<'\n';


        }
        else
        {
            f>>t>>v;
            scad(t,v);
        }

    }
    return 0;
}