Pagini recente » Cod sursa (job #2551686) | Cod sursa (job #2576296) | Cod sursa (job #1722610) | Cod sursa (job #49553) | Cod sursa (job #599913)
Cod sursa(job #599913)
#include <fstream>
using namespace std;
const char InFile[]="datorii.in";
const char OutFile[]="datorii.out";
const int MaxN=1<<15;
ifstream fin(InFile);
ofstream fout(OutFile);
int N,M,op,x,y,aib[MaxN];
inline int lsb(const int &x)
{
return x&-x;
}
inline void update(int pos, const int &val)
{
for(;pos<=N;pos+=lsb(pos))
{
aib[pos]+=val;
}
}
inline int query(int pos)
{
int sol=0;
for(;pos;pos-=lsb(pos))
{
sol+=aib[pos];
}
return sol;
}
inline int query(int a, int b)
{
return query(b)-query(a-1);
}
int main()
{
fin>>N>>M;
for(register int i=1;i<=N;++i)
{
fin>>x;
update(i,x);
}
for(register int i=1;i<=M;++i)
{
fin>>op>>x>>y;
if(op==0)
{
update(x,-y);
}
else
{
fout<<query(x,y)<<"\n";
}
}
fin.close();
fout.close();
return 0;
}