Pagini recente » Cod sursa (job #2388930) | Cod sursa (job #934459) | Cod sursa (job #1316954) | Cod sursa (job #2736132) | Cod sursa (job #1205354)
#include <fstream>
#define MX 15001
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m;
int a[3*MX];
int p1,p2;
inline void update(int nod, int left, int right) //p1 = poz, p2 = val
{
if(left == right)
{
a[nod] += p2;
return;
}
int mid = (left+right)>>1;
if(p1 <= mid) update(nod<<1, left, mid);
else update((nod<<1)+1, mid+1, right);
a[nod] = a[nod<<1] + a[(nod<<1)+1];
}
inline int query(int nod, int left, int right)
{
if(p1<=left && right<=p2)
{
return a[nod];
}
int mid = (left+right)>>1;
int s,d;
s = d = 0;
if(p1 <= mid)
{
s = query(nod<<1, left, mid);
}
if(mid < p2)
{
d = query((nod<<1)+1, mid+1, right);
}
return s+d;
}
void citire()
{
int i;
fin>>n>>m;
for(i=1; i<=n; i++)
{
p1 = i;
fin>>p2;
update(1, 1, n);
}
}
int main()
{
citire();
int i,x;
for(i=1; i<=m; i++)
{
fin>>x;
if(x == 0)
{
fin>>p1>>p2;
p2 *= -1;
update(1, 1, n);
}
else
{
fin>>p1>>p2;
fout<<query(1, 1, n);
fout<<'\n';
}
}
fin.close(); fout.close();
return 0;
}