Cod sursa(job #2423916)

Utilizator ctrohinCristina Trohin ctrohin Data 22 mai 2019 10:19:05
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;

int n, m;
int a[15002];
 
void update(int val, int ind)
{
    int poz = 0;
    while (ind <= n)
    {
        a[ind] += val;
        poz = ((ind ^ (ind - 1)) & ind);
        ind += poz;
    }
}
 
int findSum(int ind)
{
    int poz = 0, sum = 0;
    while (ind > 0)
    {
        sum += a[ind];
        poz = ((ind ^ (ind - 1)) & ind);
        ind -= poz;
    }
    return sum;
}
 
int query(int st, int dr)
{
    return findSum(dr) - findSum(st-1);
}
 
int main()
{   int cod, x, y;
	ifstream cin("datorii.in");
    ofstream cout("datorii.out");
    cin >> n >> m;
    for (int i = 1; i <= n; i++) { cin >> x; 
	                               update(x, i); } 
    for (int i = 1; i <= m; i++)
	{      cin >>cod;
           if (cod == 0) {
            cin >> x >> y;
            update(-y, x);
        }
        else {
            cin >> x >> y;
            cout << query(x, y) << endl;
        }
    }
    return 0;
}