Cod sursa(job #2757057)

Utilizator alessiamtr12Mitrica Alessia alessiamtr12 Data 3 iunie 2021 19:07:10
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,aib[15002],tip,a,b,x;
int lsb(int x)
{
    return x&(-x);
}
void update(int val,int k)
{
    for(int i=k;i<=n;i+=lsb(i))
    {
        aib[i]+=val;
        if(aib[i]<0)
            aib[i]=0;
    }
}
int query(int k)
{
    int sum=0;
    while(k)
    {
        sum+=aib[k];
        k-=lsb(k);
    }
    return sum;
}
int main()
{
     fin>>n>>m;
     for(int i=1;i<=n;i++)
     {
         fin>>x;
         update(x,i);
     }
     for(int i=1;i<=m;i++)
     {
         fin>>tip>>a>>b;
         if(tip==0)
            update(-b,a);
         else
            fout<<query(b)-query(a-1)<<"\n";
     }
    return 0;
}