Cod sursa(job #2024328)

Utilizator AlexandruabcdeDobleaga Alexandru Alexandruabcde Data 20 septembrie 2017 13:17:06
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#define ub(x) (x&(-x))
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");
int i,n,aib[15002],x,j,t,v,m,c;
void update (int poz,int val)
{
    for (j=poz; j<=n; j+=ub(j))
        aib[j]+=val;
}
void scad (int poz, int val)
{
    for (j=poz;j<=n;j+=ub(j))
        aib[j]-=val;
}
int sum (int poz)
{
    int S;
    for (j=poz; j>0; j-=ub(j))
    {
        S=S+aib[j];
    }
    return S;
}
int main ()
{
    f>>n>>m;
    for (i=1; i<=n; i++)
    {
        f>>x;
        update (i,x);
    }
    for (i=1; i<=m; i++)
    {
        f>>c;
        if (c==0)
        {
            f>>t>>v;
            scad (t,v);
        }
        else if (c==1)
        {
            f>>t>>v;
            g<<sum(v)-sum(t)<<'\n';
        }
    }
}