Pagini recente » Cod sursa (job #3158997) | Cod sursa (job #3149826) | Cod sursa (job #2755823) | Cod sursa (job #2984360) | Cod sursa (job #2923878)
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("datorii.in");
ofstream out ("datorii.out");
int n,m;
vector <int> aib;
void update(int a, int val)
{
while (a<=n)
{
aib[a]+=val;
a+=(a&-a);
}
}
int ps(int a)
{
int sum=0;
while (a>0)
{
sum+=aib[a];
a-=(a&-a);
}
return sum;
}
int rangeSum(int a, int b)
{
return ps(b)-ps(a-1);
}
int main()
{
in>>n>>m;
aib.assign(n+1,0);
for (int i=1; i<=n; i++)
{
int a;
in>>a;
update(i,a);
}
for (int i=0; i<m; i++)
{
int x,y;
int c;
in>>c>>x>>y;
if (c==0)
{
update(x,-y);
continue;
}
out<<rangeSum(x,y)<<endl;
}
return 0;
}