Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- //#include <bits/stdc++.h>
- using namespace std;
- long long a[2000000];
- int n;
- void set(int i, long long x, int v, int l, int r) {
- if (r - l == 1) {
- a[v] = x;
- return;
- }
- int m = (l + r) / 2;
- if (i <= m) {
- set(i, x, 2 * v + 1, l, m);
- }
- else {
- set(i, x, 2 * v + 2, m, r);
- }
- a[v] = a[2 * v + 1] + a[2 * v + 2];
- }
- long long sum(int L, int R, long long v, int l, int r) {
- if (R <= l || r <= L) {
- return 0L;
- }
- if (l >= L && r <= R) {
- //cout << a[v] << " ";
- return a[v];
- }
- int m = (l + r) / 2;
- long long sl = sum(L, R, 2 * v + 1, l, m);
- long long sr = sum(L, R, 2 * v + 2, m, r);
- return sl + sr;
- }
- int main() {
- cin >> n;
- int b = 1;
- while (n > b) {
- b *= 2;
- }
- long long k = 0;
- for (int i = 0; i < n; i++) {
- cin >> k;
- //cin >> a[b - 1 + i];
- set(i + 1, k, 0, 0, b);
- }
- /*cout << sum(0, b, 0, 0, b) << endl;
- for (int i = 0; i < 2 * b - 1; i++) {
- cout << a[i] << " ";
- }*/
- string str;
- while (cin >> str) {
- //cout << str << endl;
- if (str[1] == 'u') {
- int x, y;
- cin >> x >> y;
- //cout << x << " " << y << endl;
- cout << sum(x, y + 1, 0, 1, b + 1) << endl;
- }
- if (str[1] == 'e') {
- int x;
- long long y;
- cin >> x >> y;
- // cout << x << " " << y << endl;
- set(x, y, 0, 0, b);
- /*for (int i = 0; i < 2 * b - 1; i++) {
- cout << a[i] << " ";
- }*/
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement