Pagini recente » Cod sursa (job #704010) | Cod sursa (job #3222477) | Cod sursa (job #3263004) | Cod sursa (job #1699289) | Cod sursa (job #2817789)
#include <fstream>
#define mF "datorii"
std::ifstream in(mF ".in");
std::ofstream out(mF ".out");
int V[45000], n, a, b; struct W {int i = 0, j = n, k = 1;
W A() {return {i, i+j>>1, k<<1};}
W B() {return {i+j>>1, j, (k<<1)+1};}
int& V() {return ::V[k];} bool I() {return i != j-1;}
bool J(int k) {return i <= k and k < j;}
bool K(W w) {return J(w.i) and J(w.j-1);}
bool L(W w) {return w.J(i) or w.J(j-1);}
void F() {V() = A().V() + B().V();}};
void A(W w = {})
{if (w.I()) A(w.A()), A(w.B()), w.F(); else in >> w.V();}
int B(W w = {})
{
return W{a, b}.K(w)? w.V(): W{a, b}.L(w)?
B(w.A()) + B(w.B()): 0;
}
void C(W w = {})
{
if (w.I()) C(w.A().J(a)? w.A(): w.B()), w.F();
else w.V() -= b;
}
int main()
{
std::ios::sync_with_stdio(false);
int q; in >> n >> q; A(); while (q--)
{
bool c; in >> c >> a >> b; a--;
if (c) out << B() << '\n'; else C();
}
}