Cod sursa(job #3219111)

Utilizator mhyasdArdelean Mihai mhyasd Data 30 martie 2024 09:48:12
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n;
int C=0;
int bit[1501];
void update(int i, int val) {
     C = 0;
     while (i<=n)
     {
           bit[i]+=val;
           while ( !(i&(1<<C))) C++;
           i+=(1<<C);
           C++;
     }
}
int prefixsum(int i) {
    int sum=0;
    C=0;
    while(i>0) {
        sum+=bit[i];
          while ( !(i & (1<<C)) ) C++;
          i -= (1<<C);
          C++;}
    return sum;
}
int rangesum(int i, int j) {
    return prefixsum(j)-prefixsum(i-1);
}


int main()
{
   int m,x,y,z;
   fin>>n>>m;
   for(int i=1;i<=n;i++) {
       fin>>x;
       update(i,x);
   }
   for(int i=1;i<=m;i++) {
       fin>>x>>y>>z;
       if(x==0) update(y,-1*z);
       else fout<<rangesum(y,z)<<endl;
   }
    
    
    

    return 0;
}