Pagini recente » Cod sursa (job #2548203) | Cod sursa (job #266529) | Cod sursa (job #1448317) | Cod sursa (job #2965073) | Cod sursa (job #2878804)
#include <iostream>
#include <fstream>
std::ifstream in("datorii.in");
std::ofstream out("datorii.out");
const int N=15000;
int v[N+1];
int AIB[N+2];
int n, m;
void adaug(int poz, int delta)
{
int init=poz+1;
do
{
AIB[init]+=delta;
init=(init|(init-1))+1;
}
while(init<=n);
}
int sum(int poz)
{
if(poz==0) return 0;
else return AIB[poz] + sum(poz&(poz-1));
}
int main()
{
int q, x, y;
in>>n>>m;
for(int i=1; i<=n; i++)
{
in>>v[i];
adaug(i, v[i]);
}
for(int i=1; i<=m; i++)
{
in>>q>>x>>y;
if(q==0)
{
adaug(x, -y);
}
else
{
out<<sum(y+1)-sum(x)<<"\n";
}
}
}