Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <algorithm>
- #include <iomanip>
- #include <random>
- #include <ctime>
- #include <bitset>
- #include <map>
- #include <set>
- #include <unordered_map>
- #include <unordered_set>
- #include <cmath>
- #include <climits>
- #include <cstring>
- #include <queue>
- #include <deque>
- #include <list>
- #include <stack>
- #define pb push_back
- #define ff first
- #define ss second
- #define sqr(x) (x) * (x)
- #define cb(x) (x) * (x) * (x)
- #define all(x) (x).begin(), (x).end()
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- typedef pair<int, int> pii;
- typedef pair<ll, ll> pll;
- const int inf = 2e9;
- const ll linf = 2e18;
- //const ll mod = 1e9 + 7;
- const ll mod = 998244353;
- template <typename T>
- ostream& operator << (ostream& s, vector<T>& v) {
- for (auto el : v) {
- s << el << " ";
- }
- return s;
- }
- ll t[400000];
- void modify(int v, int vl, int vr, int pos, int value) {
- if (pos < vl || pos > vr) return;
- if (vl == vr) {
- t[v] = value;
- return;
- }
- int vm = vl + (vr - vl) / 2;
- if (pos <= vm) modify(2 * v + 1, vl, vm, pos, value);
- else modify(2 * v + 2, vm + 1, vr, pos, value);
- t[v] = t[2 * v + 1] + t[2 * v + 2];
- }
- ll query(int v, int vl, int vr, int l, int r) {
- if (vl > r || vr < l) return 0;
- if (vl >= l && vr <= r) return t[v];
- int vm = vl + (vr - vl) / 2;
- ll lq = query(2 * v + 1, vl, vm, l, r);
- ll rq = query(2 * v + 2, vm + 1, vr, l, r);
- return lq + rq;
- }
- void solve() {
- for (int i = 0; i < 400000; i++) t[i] = 0;
- int n, q; cin >> n >> q;
- for (int i = 0; i < q; i++) {
- int t, x, y; cin >> t >> x >> y;
- if (t == 1) modify(0, 0, n - 1, x - 1, y);
- else cout << query(0, 0, n - 1, x - 1, y - 1) << endl;
- }
- }
- int main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0), cout.tie(0);
- int q; cin >> q;
- while (q--) solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement