#include <bits/stdc++.h>
using namespace std;
const int N = 1001000;
int n;
void add(long long* a, int x, long long y) {
  for (; x <= n; x += x & -x) a[x] += y;
}
long long gsm(long long* a, int x) {
  long long ret = 0;
  for (; x; x &= x - 1) ret += a[x];
  return ret;
}
long long sum0[N], sum1[N];
void mdf(int x, int y) {
  add(sum0, x, y);
  add(sum1, x, (long long)(1 - x) * y);
}
void modify(int l, int r, int x) {
  mdf(l, x);
  if (r < n) mdf(r + 1, -x);
}
long long query(int x) { return gsm(sum0, x) * x + gsm(sum1, x); }
vector<int> vec[N];
int q[N], l[N], r[N], a[N], m;
long long ans[N];
void solve() {
  for (int i = 1; i <= m; ++i) vec[l[i]].push_back(i);
  q[0] = n + 1;
  for (int i = n, j = 0; i; --i) {
    for (; j && a[q[j]] < a[i]; --j)
      ;
    modify(i, q[j] - 1, 1);
    q[++j] = i;
    for (int t : vec[i]) ans[t] += query(r[t]);
  }
  for (int i = 1; i <= n; ++i) vec[i].clear(), sum0[i] = sum1[i] = 0;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) cin >> a[i];
  for (int i = 1; i <= m; ++i) cin >> l[i];
  for (int i = 1; i <= m; ++i) cin >> r[i];
  solve();
  for (int i = 1; i <= m; ++i)
    l[i] = n + 1 - l[i], r[i] = n + 1 - r[i], swap(l[i], r[i]);
  reverse(a + 1, a + n + 1);
  solve();
  for (int i = 1; i <= m; ++i)
    ans[i] -= r[i] - l[i] + 1, cout << ans[i] << " \n"[i == m];
  return 0;
}
