Cod sursa(job #2626380)

Utilizator andreea.vasilescuAndreea Vasilescu andreea.vasilescu Data 6 iunie 2020 14:03:04
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>
 
using namespace std;
 
ifstream in("datorii.in");
ofstream out("datorii.out");
 
const int dim = 15010;
 
int n, m, v[dim];
 
int nr(int x)
{
    return (x & (-x));
}
 
int suma(int x)
{
    int s = 0;
    while(x > 0)
    {
        s += v[x];
        x -= nr(x);
    }
    return s;
}
 
void baga(int i, int x)
{
    while(i <= n)
    {
        v[i] += x;
        i += nr(i);
    }
}
 
void scade(int i, int x)
{
    while(i <= n)
    {
        v[i] -= x;
        i += nr(i);
    }
}
 
int main()
{
    in>>n>>m;
    int o, x, y;
    for(int i = 1;i <= n;i++)
    {
        in>>x;
        baga(i, x);
    }
    for(int i = 1;i <= m;i++)
    {
        in>>o>>x>>y;
        if(o == 0)
            scade(x, y);
        else
            out<<suma(y) - suma(x - 1)<<'\n';
    }
    return 0;
}