Pagini recente » Cod sursa (job #2265484) | Cod sursa (job #2761796) | Cod sursa (job #287655) | the-secret | Cod sursa (job #2209753)
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int N = 2000002;
int n, m, arb[N], c, a, b;
void update(int p, int st, int dr) {
if (st == dr) {
arb[p] -= b;
return;
}
int m = (st + dr) / 2;
if (a <= m) update(p << 1, st, m);
else update((p << 1) + 1, m + 1, dr);
arb[p] = arb[p << 1] + arb[(p << 1) + 1];
}
int cautare(int p, int st, int dr) {
if (a <= st && dr <= b) return arb[p];
int r = 0, m = (st + dr) / 2;
if (a <= m) r += cautare(p << 1, st, m);
if (b > m) r += cautare((p << 1) + 1, m + 1, dr);
return r;
}
int main()
{
in >> n >> m;
for (int i = 1; i <= n; i++) {
in >> b;
b = -b;
a = i;
update(1, 1, n);
}
for (int i = 1; i <= m; i++) {
in >> c >> a >> b;
if (c == 0) update(1, 1, n);
if (c == 1) out << cautare(1, 1, n) << '\n';
}
in.close();
out.close();
}