Cod sursa(job #3280754)

Utilizator MoxelBagiu Matei-Octavian Moxel Data 27 februarie 2025 15:07:35
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,caz,T,V,P,Q,v[101],t[101];

void fenwick()
{
    for(int i=1;i<=n;i++)
        {
        int p=i+(i&-i);
        if(p<n)
            t[p]+=t[i];
        }
}
int dif(int i)
{
    int sum=0;
    while (i)
    {
        sum+=t[i];
        i= i-(i&-i);
    }
    return sum;
}
void add(int i,int k)
{
    while(i<=n)
    {
        t[i]=t[i]-k;
        i=i+(i&-i);
    }
}


int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        t[i]=v[i];
    }
    fenwick();
    while(m)
    {
        fin>>caz;
        switch (caz)
        {
        case 0:
            {
                fin>>T>>V;
                add(T,V);
                break;
            }
        case 1:
            {
                fin>>P>>Q;
                fout<<dif(Q)-dif(P-1)<<endl;
                break;
            }

        }
        --m;
    }
}
/*15
5 2 9 -3 5 20 10 -7 2 3 -4 0 -2 15 5*/