fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define int long long
  4. #define fi first
  5. #define se second
  6. #define pb push_back
  7. #define pf push_front
  8. #define ii pair<ll, ll>
  9. using namespace std;
  10.  
  11. const int N = 2e5 + 7;
  12. const int MOD = 1e9 + 7;
  13.  
  14. int n, q;
  15. int a[N];
  16. int tree[N];
  17.  
  18. void update(int id, int v) {
  19. while (id <= n) {
  20. tree[id] = (tree[id] + v + MOD) % MOD;
  21. id += id & -id;
  22. }
  23. }
  24.  
  25. int get(int id) {
  26. int sum = 0;
  27. while (id > 0) {
  28. sum = (sum + tree[id]) % MOD;
  29. id -= id & -id;
  30. }
  31. return sum;
  32. }
  33.  
  34. void solve() {
  35. cin >> n >> q;
  36. for (int i = 1; i <= n; i++) {
  37. cin >> a[i];
  38. update(i, a[i]);
  39. }
  40.  
  41. while (q--) {
  42. int type, b, c;
  43. cin >> type >> b >> c;
  44. if (type == 1) {
  45. update(b, c - a[b]);
  46. a[b] = c;
  47. } else {
  48. int res = (get(c) - get(b - 1) + MOD) % MOD;
  49. cout << res << '\n';
  50. }
  51. }
  52. }
  53.  
  54. int32_t main() {
  55. ios_base::sync_with_stdio(false);
  56. cin.tie(nullptr);
  57. solve();
  58. }
  59.  
Success #stdin #stdout 0.01s 5308KB
stdin
Standard input is empty
stdout
Standard output is empty