Pagini recente » Cod sursa (job #1578109) | Cod sursa (job #571297) | Cod sursa (job #59529) | Cod sursa (job #2568039) | Cod sursa (job #1236942)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
#define MAX 15002
int a[4*MAX], ind, val, minim, l, r, n, b[MAX];
void update(int nod, int st, int dr)
{
if(st == dr)
{
a[nod] = val;
return;
}
int mij=(st+dr)>>1;
if(ind<=mij)
update(2*nod, st, mij);
else
update(2*nod+1, mij+1, dr);
a[nod]=a[2*nod]+a[2*nod+1];
}
void query(int nod, int st, int dr)
{
if(l <= st && dr <= r)
{
minim+=a[nod];
return;
}
int mij=(st+dr)>>1;
if(l<=mij)
{
query(2*nod, st, mij);
}
if(mij+1<=r)
{
query(2*nod+1, mij+1, dr);
}
}
void U(int i, int v)
{
ind = i;
val = v;
update(1, 1, n);
}
int Q(int st, int dr)
{
l = st;
r = dr;
minim = 0;
query(1, 1, n);
return minim;
}
int main()
{
int m, i, x, y, t;
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>b[i];
U(i, b[i]);
}
while(m--)
{
fin>>t>>x>>y;
if(t==0)
{
b[x]-=y;
U(x, b[x]);
}
else
fout<<Q(x, y)<<"\n";
}
}