Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- string s;
- long long ans;
- int n, m, p, a, b, lv, rv, x[10000009];
- void unit()
- {
- for(int i = p-1; i>=1; i--)
- x[i] = x[i*2]+x[i*2+1];
- }
- void modify(int v, int izm)
- {
- x[v] = izm;
- while (v>1)
- {
- v=v/2;
- x[v]=x[v*2]+x[v*2+1];
- }
- }
- int sum(int lv,int rv,int v, int l, int r)
- {
- if (lv>r || rv<l)
- {
- return 0;
- }
- else if (l>=lv && rv>=r)
- {
- return x[v];
- }
- else
- {
- return sum(lv,rv,2*v,l,(l+r)/ 2)+sum(lv,rv,2*v+1,((l+r)/ 2)+1,r);
- }
- }
- int main()
- {
- //freopen("input.txt", "r", stdin);
- // freopen("output.txt", "w", stdout);
- cin >> n >> m;
- p = 1;
- while(p < n)
- {
- p*=2;
- }
- for(int i = 1; i<=n; i++)
- {
- cin >> x[p + i - 1];
- }
- unit();
- for (int i=p;i<=2*p-1;i++)
- cout << x[i] << " ";
- cout << endl;
- for(int i = 1; i<=m; i++)
- {
- cin >> s;
- cin >> a >> b;
- if (s == "=")
- {
- modify(a+p-1, b);
- }
- else
- {
- ans = 0;
- lv = a + p - 1;
- rv = b + p - 1;
- cout << sum(lv,rv,1,p,2*p-1) << endl;
- // cout << ans << endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement