Pagini recente » Cod sursa (job #1446899) | Cod sursa (job #2424653) | Cod sursa (job #969160) | Cod sursa (job #1313050) | Cod sursa (job #2303211)
#include <fstream>
#define LSB(x) x^(x&(x-1))
#define NMAX 15000
using namespace std;
ifstream fi("datorii.in");
ofstream fo("datorii.out");
int n, m;
int X[NMAX+5], AIB[NMAX+5];
void update(int pos, int val)
{
while(pos<=n)
{
AIB[pos]+=val;
pos+=LSB(pos);
}
}
void build(void)
{
for(int i=1; i<=n; i++)
update(i, X[i]);
}
int suma(int pos)
{
int sum=0;
while(pos)
{
sum+=AIB[pos];
pos-=LSB(pos);
}
return sum;
}
int main()
{
fi>>n>>m;
for(int i=1; i<=n; i++)
fi>>X[i];
build();
while(m--)
{
int q;
fi>>q;
if(q==0)
{
int t, v;
fi>>t>>v;
update(t, -v);
}
else
{
int p, q;
fi>>p>>q;
fo<<suma(q)-suma(p-1)<<"\n";
}
}
fi.close();
fo.close();
return 0;
}