Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. // icpc.me/2042
  2. #include <cstdio>
  3.  
  4. typedef long long ll;
  5.  
  6. int N, M, K;
  7. ll tree[4000005], a, b, c;
  8.  
  9. ll update(int idx, int val, int node, int nodeLeft, int nodeRight) {
  10. if (idx < nodeLeft || idx > nodeRight) return tree[node];
  11. if (nodeLeft == nodeRight) return tree[node] = val;
  12.  
  13. int mid = (nodeLeft + nodeRight) / 2;
  14. return tree[node] = update(idx, val, node * 2, nodeLeft, mid) + update(idx, val, node * 2 + 1, mid + 1, nodeRight);
  15. }
  16.  
  17. ll read(int left, int right, int node, int nodeLeft, int nodeRight) {
  18. if (right < nodeLeft || left > nodeRight) return 0;
  19. if (left <= nodeLeft && nodeRight <= right) return tree[node];
  20.  
  21. int mid = (nodeLeft + nodeRight) / 2;
  22. return read(left, right, node * 2, nodeLeft, mid) + read(left, right, node * 2 + 1, mid + 1, nodeRight);
  23. }
  24.  
  25. int main() {
  26. scanf("%d %d %d", &N, &M, &K);
  27. for (int i = 0; i < N; i++) {
  28. scanf("%lld", &a);
  29. update(i, a, 1, 0, N - 1);
  30. }
  31.  
  32. for (int i = 0; i < M + K; i++) {
  33. scanf("%lld %lld %lld", &a, &b, &c);
  34. if (a == 1) {
  35. update(b - 1, c, 1, 0, N - 1);
  36. }
  37. else {
  38. printf("%lld\n", read(b - 1, c - 1, 1, 0, N - 1));
  39. }
  40. }
  41.  
  42. return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement