Cod sursa(job #3256412)

Utilizator contandrei3Andrei Mihai contandrei3 Data 14 noiembrie 2024 15:57:58
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("datorii.in");
ofstream fout ("datorii.out");
int n,m,aib[15005],i,a,b,c,x;
void adun (int x, int val)
{
    int i;
    for(i=x ; i<=n ;i += i & (-i) )
        aib[i] += val;
}
void scad (int x, int val)
{
    int i;
    for(i=x ; i<=n ;i += i & (-i) )
        aib[i] -= val;
}

int suma (int x)
{
    int i,s=0;
    for (i=x;i>=1;i-=i&(-i))
        s+=aib[i];
    return s;
}
int main()
{
    fin>>n>>m;
    for (i=1;i<=n;i++)
        {
            fin>>x;
            adun(i,x);
        }
    //for (i=1;i<=n;i++) cout<<aib[i]<<" ";
    while (m--)
        {
            fin>>c>>a>>b;
            if (c==0)
                {
                    scad(a,b);
                }
            else
                fout<<suma(b)-suma(a-1)<<"\n";
        }
    return 0;
}