Pagini recente » Cod sursa (job #2883278) | Cod sursa (job #1537433) | Cod sursa (job #2773847) | Cod sursa (job #1485043) | Cod sursa (job #2816916)
#include <fstream>
#define mF "datorii"
std::ifstream in(mF ".in");
std::ofstream out(mF ".out");
int V[45000], n, b, c;
struct X {int i = 0, j = n, k = 1;
X A() {return {i, i+j>>1, k<<1};}
X B() {return {i+j>>1, j, (k<<1)+1};}
int& V() {return ::V[k];}
bool I() {return i != j-1;}
bool J(int p) {return i <= p and p < j;}
void F() {V() = A().V() + B().V();}};
void A(X e = {})
{
if (e.I()) A(e.A()), A(e.B()), e.F();
else in >> e.V();
}
int B(X e = {})
{
return X{b, c}.J(e.i) and X{b, c}.J(e.j-1)? e.V():
e.I() and (e.J(b) or e.J(c-1))?
B(e.A()) + B(e.B()): 0;
}
void C(X e = {})
{
if (e.I()) e.A().J(b)? C(e.A()): C(e.B());
e.V() -= c;
}
int main()
{
int m; in >> n >> m; A(); while (m--)
{
bool a; in >> a >> b >> c; b--;
if (a) out << B() << '\n'; else C();
}
}