Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <ext/pb_ds/assoc_container.hpp>
- /*#pragma GCC optimize("0fast, no-stack-protector")
- #pragma GCC optimize("unroll-loops")
- #pragma GCC optimize("fast-math")
- #pragma GCC optimize("section-anchors")
- #pragma GCC optimize("profile-values, profile-reorder-functions, tracer")
- #pragma GCC optimize("vpt")
- #pragma GCC optimize("rename-registers")
- #pragma GCC optimize("move-loops-invariant")
- #pragma GCC optimize("unswitch-loops")
- #pragma GCC optimize("function-sections")
- #pragma GCC optimize("data-sections")
- #pragma GCC optimize("branch-target-load-optimize")
- #pragma GCC optimize("btr-bb-exclusive")*/
- #define all(v) v.begin(), v.end()
- #define sz(v) (int)v.size()
- using namespace std;
- using namespace __gnu_pbds;
- using ll = long long;
- using ld = long double;
- typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
- const int L = 1e5 + 1;
- const ll MOD = 1e9 + 7;
- const int INF = (int)MOD;
- int n, m;
- vector <int> a, t;
- int sum(int r) {
- int ans = 0;
- for (; r >= 0; r = (r & (r + 1)) - 1) ans += t[r];
- return ans;
- }
- void upd(int i, int x) {
- for (; i < n; i = (i | (i + 1))) t[i] += x;
- }
- int sum(int l, int r) {
- return sum(r) - sum(l - 1);
- }
- void init(vector <int>& x) {
- for (int i = 0; i < n; ++i) upd(i, x[i]);
- }
- void solve() {
- cin >> n >> m;
- a.resize(n); t.resize(n);
- for (int& i : a) cin >> i;
- init(a);
- while (m--) {
- int type, l, r;
- cin >> type >> l >> r;
- if (type == 1) {
- upd(l - 1, r);
- }
- else {
- cout << sum(l - 1, r - 1) << '\n';
- }
- }
- }
- int main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0); cout.tie(0);
- solve();
- return 0;
- }
- /// ACTUAL CODE STARTS HERE:
- /*
- ▄▀▀▀▄
- ▄███▀░◐░░░▌
- ▌░░░░░▐
- ▐░░░░░▐
- ▌░░░░░▐▄▄
- ▌░░░░▄▀▒▒▀▀▀▀▄
- ▐░░░░▐▒▒▒▒▒▒▒▒▀▀▄
- ▐░░░░▐▄▒▒▒▒▒▒▒▒▒▒▀▄
- ▀▄░░░░▀▄▒▒▒▒▒▒▒▒▒▒▀▄
- ▀▄▄▄▄▄█▄▄▄▄▄▄▄▄▄▄▄▀▄
- ▌▌░▌▌
- ▌▌░▌▌
- ▄▄▌▌▄▌▌ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement