Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define int long long
- const int N = 1e6;
- int a[N], d[N], k;
- void build(int v, int l, int r) {
- if (r - l == 1) {
- d[v] = a[l];
- }
- else {
- int m = (r + l) / 2;
- build(v * 2 + 1, l, m);
- build(v * 2 + 2, m, r);
- d[v] = d[v * 2 + 1] + d[v * 2 + 2];
- }
- }
- void update (int v, int l, int r, int in, int x) {
- if (r - l == 1) {
- d[v] = x;
- }
- else {
- int m = (r + l) / 2;
- if (m <= in) {
- update(v * 2 + 2, m, r, in, x);
- }
- else {
- update(v * 2 + 1, l, m, in, x);
- }
- d[v] = d[v * 2 + 1] + d[v * 2 + 2];
- }
- }
- void ans (int v, int l, int r, int vl, int vr) {
- if (vl <= l && r <= vr) {
- k+= d[v];
- }
- else {
- int m = (r + l) / 2;
- if (m <= vl) {
- ans(v * 2 + 2, m, r, vl, vr);
- }
- else {
- if (m >= vr) {
- ans(v * 2 + 1, l, m, vl, vr);
- }
- else {
- ans(v * 2 + 1, l, m, vl, vr);
- ans(v * 2 + 2, m, r, vl, vr);
- }
- }
- }
- }
- signed main() {
- int n;
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> a[i];
- }
- build(0, 0, n);
- string s;
- while (cin >> s) {
- if (s == "sum") {
- k = 0;
- int l, r;
- cin >> l >> r;
- l--;
- ans(0, 0, n, l, r);
- cout << k << "\n";
- }
- else {
- int x, in;
- cin >> in >> x;
- in--;
- update(0, 0, n, in, x);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement