Pagini recente » Cod sursa (job #806976) | Cod sursa (job #3125853) | Monitorul de evaluare | Cod sursa (job #1182275) | Cod sursa (job #1682382)
#include <bits/stdc++.h>
#define nmax 15005
using namespace std;
int aib[nmax],n,m;
ofstream fout("datorii.out");
inline void Update1(int p,int x)
{
while(p<=n)
{
aib[p]+=x;
p+=(p&(-p));
}
}
inline void Update2(int p,int x)
{
while(p<=n)
{
aib[p]-=x;
p+=(p&(-p));
}
}
inline int Query(int p)
{
int s=0;
while(p>0)
{
s+=aib[p];
p-=(p&(-p));
}
return s;
}
inline void Solve(int x,int y)
{
fout<<Query(y)-Query(x-1)<<"\n";
}
inline void Input()
{
int i,x,y,opt;
ifstream fin("datorii.in");
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>x;
Update1(i,x);
}
for(i=1;i<=m;i++)
{
fin>>opt>>x>>y;
if(opt==0) Update2(x,y);
else Solve(x,y);
}
fin.close();
fout.close();
}
int main()
{
Input();
return 0;
}