Cod sursa(job #3223183)

Utilizator cristian46290Petre Cristian cristian46290 Data 12 aprilie 2024 16:18:58
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <climits>
#include <cstring>
#include <cctype>
#include <cmath>
#define ub(x) (x & (-x))

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

int a[100005] , aib[100005] , n;

void add1(int x , int val)
{
    for(int i = x;i <= n;i += ub(i)) aib[i] += val;
}
void add2(int x , int val)
{
    for(int i = x;i <= n;i += ub(i)) aib[i] -= val;
}

int sum(int x)
{
    int s=0 , i;
    for(i = x;i >= 1;i -= ub(i)) s += aib[i];
    return s;
}

int main()
{
    int q = 0;
    f >> n >> q;
    for(int i = 1;i <= n;i++){
        f >> a[i];
        add1(i,a[i]);
    }
    //int q;
    int c, x, y;
    for(int i = 1;i <= q;i++){
        //add1(i,a[i]);
        f >> c >> x >> y;
        if (c == 1)g << sum(y) - sum(x-1) << '\n';
        else add2(x,y);
    }
}