Pagini recente » Cod sursa (job #1342298) | Cod sursa (job #436638) | Cod sursa (job #1552689) | Cod sursa (job #1021914) | Cod sursa (job #830029)
Cod sursa(job #830029)
#include <fstream>
using namespace std;
#define MAX_N 15001
int aib[MAX_N];
int n;
inline int zerouri(int x)
{
return ((x & (x - 1)) ^ x);
}
void adauga(int pos, int val)
{
for (int i=pos;i<=n;i+=zerouri(i))
aib[i]+=val;
}
int interogare(int pos)
{
int suma=0;
for (int i=pos;i>0;i-=zerouri(i))
suma+=aib[i];
return suma;
}
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
int m;
f>>n>>m;
int i;
for(i=1;i<=n;++i)
{
int a;
f>>a;
adauga(i,a);
}
int operatie,x,y;
for(i=1;i<=m;++i)
{
f>>operatie>>x>>y;
if(operatie)
{
if(!x)
g<<interogare(y)<<endl;
else
g<<interogare(y)-interogare(x-1)<<endl;
}
else
adauga(x,0-y);
}
f.close();
g.close();
return 0;
}