Pagini recente » Cod sursa (job #1278757) | Cod sursa (job #3153608) | Cod sursa (job #1639957) | Cod sursa (job #2071891) | Cod sursa (job #2023944)
#include <bits/stdc++.h>
#define N 15000
#define nst (nod << 1)
#define ndr (nst + 1)
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int AINT[4 * N + 100], Q, cod, a, b, poz, x, n, suma;
void Update_Element(int nod, int st, int dr, int val)
{
if(st == dr) AINT[nod] += val;
else
{
int m = (st + dr) / 2;
if(poz <= m) Update_Element(nst, st, m, val);
else Update_Element(ndr, m + 1, dr, val);
AINT[nod] = AINT[nst] + AINT[ndr];
}
}
void Query(int nod, int st, int dr)
{
if(a <= st && dr <= b) suma += AINT[nod];
else
{
int m = (st + dr) / 2;
if(m >= a) Query(nst, st, m);
if(m + 1 <= b) Query(ndr, m + 1, dr);
}
}
int main()
{
f >> n >> Q;
for(int i = 1; i <= n; ++i)
{
f >> x;
poz = i;
Update_Element(1, 1, n, x);
}
for(int i = 1; i <= Q; ++i)
{
f >> cod >> a >> b;
if(cod == 0)
{
poz = a;
Update_Element(1, 1, n, -b);
}
else
{
suma = 0;
Query(1, 1, n);
g << suma << '\n';
}
}
return 0;
}