Pagini recente » Cod sursa (job #1194909) | Cod sursa (job #17785) | Cod sursa (job #87067) | Cod sursa (job #1348446) | Cod sursa (job #2777906)
#include <bits/stdc++.h>
//#pragma GCC optimize("Ofast")
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int t[30000];
void Update(int pos, int val, int n)
{
for (t[pos+=n]-=val;pos>1;pos/=2)
t[pos/2]=t[pos]+t[pos^1];
}
int Compute(int l, int r, int n)
{
int ans;
ans=0;
for (l+=n, r+=n;l<r;l/=2, r/=2)
{
if (l%2)
ans+=t[l++];
if (r%2)
ans+=t[--r];
}
return ans;
}
int main()
{
int n, Q, i, task, a, b;
fin>>n>>Q;
for (i=0;i<n;++i)
fin>>t[n+i];
for (i=n-1;i;--i)
t[i]=t[i*2]+t[i*2+1];
while (Q--)
{
fin>>task>>a>>b;
if (!task)
Update(a-1, b, n);
else
fout<<Compute(a-1, b, n)<<'\n';
}
fin.close();
fout.close();
return 0;
}