Submission #1190714

#TimeUsernameProblemLanguageResultExecution timeMemory
1190714lopkusFish 3 (JOI24_fish3)C++20
0 / 100
161 ms12704 KiB
#include <bits/stdc++.h>

const int N = 3e5 + 5;

struct segtree{
    int64_t t[4*N] = {0};
    int64_t query(int v, int tl, int tr, int l, int r) {
        if(tl > r || tr < l) {
            return 0;
        }
        if(tl >= l && tr <= r) {
            return t[v];
        }
        int tm = (tl + tr) / 2;
        return (query(v * 2, tl, tm, l, r) + query(v * 2 + 1, tm + 1, tr, l, r));
    }
    void update(int v, int tl, int tr, int index, int64_t value) {
        if(tl == tr) {
            t[v] = value;
        }
        else {
            int tm = (tl + tr) / 2;
            if(index <= tm) {
                update(v * 2, tl, tm, index, value);
            }
            else {
                update(v * 2 + 1, tm + 1, tr, index, value);
            }
            t[v] = (t[v * 2] + t[v * 2 + 1]);
        }
    }
}seg;

void solve() {
  int n, d;
  std::cin >> n >> d;
  std::vector<int64_t> a(n + 1);
  for(int i = 1; i <= n; i++) {
    std::cin >> a[i];
  }
  assert(d == 1);
  for(int i = 2; i <= n; i++) {
    if(a[i] < a[i - 1]) {
      seg.update(1, 1, n, i, a[i - 1] - a[i]);
    }
  }
  int q;
  std::cin >> q;
  while(q--) {
    int l, r;
    std::cin >> l >> r;
    std::cout << seg.query(1, 1, n, l + 1, r) << "\n";
  }
}

int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);

  int t = 1;
  //std::cin >> t;
  while (t--) {
      solve();
  }

  return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...