fenwick-add-point

 avatar
unknown
c_cpp
20 days ago
718 B
5
Indexable
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1e5 + 14;

int fen[MAXN], n;

void add(int ind, int x)
{
	for(; ind <= n; ind += ind & -ind)
		fen[ind] += x;
	return;
}

int get(int ind)
{
	int sum = 0;
	for(; ind; ind -= ind & -ind)
		sum += fen[ind];
	return sum;
}

int main()
{
	ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int q;
	cin>> n >> q;
	for(int i = 0; i < n; i++)
	{
		int a;
		cin>> a;
		add(i + 1, a);
	}
	while(q--)
	{
		int type;
		cin>> type;
		if(type == 1) // add
		{
			int idx, x;
			cin>> idx >> x;
			add(idx, x);
		}
		else // get
		{
			int l, r;
			cin>> l >> r;
			cout << get(r) - get(l - 1) << '\n';
		}
	}
}
Editor is loading...
Leave a Comment