#include <bits/stdc++.h>
using namespace std;
vector<int> adj[100002];
vector<bool> visited(100002, false);
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t;
  t = 1;
  while (t--) {
    long long int n, m;
    cin >> n >> m;
    vector<long long int> cost(n + 1);
    vector<long long int> num(n + 1);
    for (int i = 0; i < n; i++) cin >> num[i + 1];
    for (int i = 0; i < n; i++) cin >> cost[i + 1];
    set<pair<long long int, long long int>> s;
    for (int i = 0; i < n; i++) {
      s.insert({cost[i + 1], i + 1});
    }
    for (int i = 0; i < m; i++) {
      long long int dn, nd;
      cin >> dn >> nd;
      long long int ct = 0;
      if (num[dn] > 0) {
        if (nd <= num[dn]) {
          ct = cost[dn] * nd;
          num[dn] = num[dn] - nd;
          nd = 0;
        } else {
          ct += cost[dn] * num[dn];
          nd = nd - num[dn];
          num[dn] = 0;
          s.erase(s.find({cost[dn], dn}));
          while (s.size() > 0) {
            auto x = s.begin();
            dn = x->second;
            if (num[dn] >= nd) {
              ct += cost[dn] * nd;
              num[dn] = num[dn] - nd;
              nd = 0;
              break;
            } else {
              ct += cost[dn] * num[dn];
              nd = nd - num[dn];
              num[dn] = 0;
              s.erase(s.find({cost[dn], dn}));
            }
          }
        }
      } else {
        while (s.size() > 0) {
          auto x = s.begin();
          dn = x->second;
          if (num[dn] >= nd) {
            ct += cost[dn] * nd;
            num[dn] = num[dn] - nd;
            nd = 0;
            break;
          } else {
            ct += cost[dn] * num[dn];
            nd = nd - num[dn];
            num[dn] = 0;
            s.erase(s.find({cost[dn], dn}));
          }
        }
      }
      if (nd == 0) {
        cout << ct << "\n";
      } else {
        cout << 0 << "\n";
      }
    }
  }
}
