Pagini recente » Cod sursa (job #137972) | Cod sursa (job #128342) | Cod sursa (job #1849873) | Cod sursa (job #309412) | Cod sursa (job #2872503)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
class aib
{
private:
vector <int> v;
int nsize;
int lsb(int pos)
{
return pos&(-pos);
}
public:
aib(int n)
{
v.resize(n+1);
nsize=n;
}
void update(int pos,int val)
{
while(pos<=nsize)
{
v[pos]+=val;
pos+=lsb(pos);
}
}
int query(int pos)
{
int sum=0;
while(pos>=1)
{
sum+=v[pos];
pos-=lsb(pos);
}
return sum;
}
};
int main()
{
int n,m;
in>>n>>m;
aib x(n);
for(int i=1;i<=n;i++)
{
int a;
in>>a;
x.update(i,a);
}
for(int i=1;i<=m;i++)
{
int c,t,v;
in>>c>>t>>v;
if(c==0)
x.update(t,-v);
else
out<<x.query(v)-x.query(t-1)<<"\n";
}
return 0;
}