#include <bits/stdc++.h>
#pragma warning(disable : 4996)
#pragma comment(linker, "/STACK:336777216")
using namespace std;
inline long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
inline long long power(long long a, long long n, long long m) {
  if (n == 0) return 1;
  long long p = power(a, n / 2, m);
  p = (p * p) % m;
  if (n % 2)
    return (p * a) % m;
  else
    return p;
}
const long long MOD = 1000000007;
const int INF = 0x3f3f3f3f;
const long long LL_INF = 0x3f3f3f3f3f3f3f3f;
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  int n, m;
  cin >> n >> m;
  long long a[n];
  set<pair<long long, int> > st;
  long long c[n];
  int t;
  long long d;
  long long ans;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++) {
    cin >> c[i];
    st.insert(make_pair(c[i], i));
  }
  pair<long long, int> p;
  set<pair<long long, int> >::iterator it;
  long long mn;
  for (int i = 0; i < m; i++) {
    cin >> t >> d;
    t--;
    if (a[t] >= d) {
      ans = c[t] * d;
      a[t] -= d;
      if (a[t] == 0) {
        st.erase(st.find(make_pair(c[t], t)));
      }
    } else {
      mn = min(a[t], d);
      ans = c[t] * mn;
      a[t] -= mn;
      it = st.find(make_pair(c[t], t));
      if (it != st.end()) st.erase(it);
      d -= mn;
      if (d > 0) {
        while (d > 0) {
          it = st.begin();
          if (it == st.end()) {
            ans = 0;
            break;
          } else {
            p = (*it);
            mn = min(d, a[p.second]);
            ans = ans + c[p.second] * mn;
            d -= mn;
            a[p.second] -= mn;
            if (a[p.second] == 0) {
              st.erase(it);
            }
          }
        }
      }
    }
    cout << ans << "\n";
  }
  return 0;
}
