#include <cstdio>
#define maxn 10001
using namespace std;
int sum[maxn << 2];
int order, x, y;
void build(int t, int l, int r) {
int m = (l + r) >> 1;
if (l == r) scanf("%d", sum + t);
else {
build(t << 1, l, m);
build(t << 1 | 1, m + 1, r);
sum[t] = fun(sum[t << 1], sum[t << 1 | 1]);
}
}
void update(int t, int l, int r) {
int m = (l + r) >> 1;
if (l == r) sum[t] = change(sum[t]);
else {
if (x <= m) update(t << 1, l, m);
else update(t << 1 | 1, m + 1, r);
sum[t] = fun(sum[t << 1], sum[t << 1 | 1]);
}
}
void query(int t, int l, int r) {
int m = (l + r) >> 1;
int res = xx;
if (x <= l && r < y) return sum[t];
else {
if (x <= m) res = fun(res, query(t << 1, l, m));
if (y > m) res = fun(res, query(t << 1 | 1, m + 1, r));
}
return res;
}
int main() {
build(1, 1, n);
while (~scanf("%d%d%d", &order, &x, &y)) {
if (order == update) update(1, 1, n);
else if (order == query) printf("%d\n", query(1, 1, n));
}
}
学习资料收集
最新推荐文章于 2019-01-16 21:59:06 发布