Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*-------------------- Code written by Kabeton --------------------*/
- /*--- Contacts: https://vk.com/kabeton and TheKabeton@yandex.ru ---*/
- #define _USE_MATH_DEFINES
- #include <iostream>
- #include <iomanip>
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- #include <algorithm>
- #include <vector>
- #include <map>
- #include <unordered_map>
- #include <set>
- #include <bitset>
- #include <tuple>
- #include <queue>
- #include <stack>
- #include <valarray>
- #include <sstream>
- #include <cstring>
- #include <numeric>
- #include <ctime>
- #include <cassert>
- #define endl "\n"
- #define re return
- #define fi first
- #define se second
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- const ll mod = 1e9 + 7;
- using namespace std;
- vector<ll> d(4 * 100000);
- void build(const vector<ll>& v, ll ind, ll left, ll right) {
- if (left == right) {
- d[ind] = v[left];
- } else {
- ll mid = (left + right) / 2;
- build(v, ind * 2, left, mid);
- build(v, ind * 2 + 1, mid + 1, right);
- d[ind] = d[ind * 2] + d[ind * 2 + 1];
- }
- }
- ll sum(ll v, ll left, ll right, ll l, ll r) {
- if (l > r) re 0;
- if (left == l && right == r) re d[v];
- ll mid = (left + right) / 2;
- re sum(v*2, left, mid, l, min(r, mid)) +
- sum(v*2 + 1, mid + 1, right, max(l, mid + 1), r);
- }
- void update(ll v, ll left, ll right, ll pos, ll value) {
- if (left == right) {
- d[v] = value;
- } else {
- ll mid = (left + right) / 2;
- if (pos <= mid) {
- update(v * 2, left, mid, pos, value);
- } else {
- update(v * 2 + 1, mid + 1, right, pos, value);
- }
- d[v] = d[v * 2] + d[v * 2 + 1];
- }
- }
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- ll n, m;
- cin >> n >> m;
- vector<ll> v(n);
- for (auto &i : v) {
- cin >> i;
- }
- build(v, 1, 0, n - 1);
- for (int i = 0; i < m; ++i) {
- ll a, b, c;
- cin >> a >> b >> c;
- if (a == 0) {
- cout << sum(1, 0, n - 1, b - 1, c - 1) << endl;
- } else {
- update(1, 0, n - 1, b - 1, c);
- }
- }
- re 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement