Cod sursa(job #2199822)

Utilizator YouDontNeedMyNameJurcut Paul YouDontNeedMyName Data 29 aprilie 2018 10:49:45
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#define D_MAX 100005
#define P(x) ( x&(-x) )
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int a[D_MAX],n,m;
void ADD(int what, int where)
{
    for(int i=where; i<=n; i+=P(i))
    {
        a[i]+=what;
    }
}
int S(int x)
{
    int sum=0;
    for(int i=x; i>0; i-=P(i))
    {
        sum+=a[i];
    }
    return sum;
}
int suma_pe_interval(int p1, int p2)
{
    return S(p2)-S(p1-1);
}
int main()
{
    cin >> n >> m;
    for(int i=1; i<=n; i++)
    {
        int x;
        cin >> x;
        ADD(x,i);
    }
    for(int i=0; i<m; i++)
    {
        int x,y,z;
        cin >> z >> x >> y;
        if(z)
        {
            cout << suma_pe_interval(x,y) << '\n';
        }
        else
        {
            ADD(-y,x);
        }
    }
    return 0;
}