Pagini recente » Cod sursa (job #2650895) | Cod sursa (job #2171118) | Cod sursa (job #123425) | Cod sursa (job #1809009) | Cod sursa (job #2982913)
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
class AIB
{
private:
int n; vector<int> aib;
int lsb(int x){return x & -x;}
public:
AIB(int _n)
{
n = _n;
aib.resize(n + 1,0);
}
void update(int poz,int val)
{
for(int i = poz; i <= n ; i += lsb(i)) aib[i] += val;
}
int query(int poz)
{
int ans = 0;
for(int i = poz ; i ; i -= lsb(i)) ans += aib[i]; return ans;
}
};
int main()
{
int n,q,a,b,c;
cin >> n >> q; AIB aib(n);
for(int i = 1; i <= n ; i++)
{
cin >> a;
aib.update(i,a);
}
while(q--)
{
cin >> a >> b >> c;
if(a == 0) aib.update(b,-c);
else cout << (aib.query(c) - aib.query(b - 1)) << '\n';
}
return 0;
}