#include <bits/stdc++.h>
using namespace std;
bool less_vectors(const vector<int>& a, const vector<int>& b) {
  return a.size() > b.size();
}
int gcd(int a, int b) {
  if (a % b == 0)
    return b;
  else
    return gcd(b, a % b);
}
class dc {
 public:
  bool operator()(pair<int, int> p1, pair<int, int> p2) {
    return p1.second > p2.second;
  }
};
long long fastexpo(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b % 2 == 1)
      res = (((res) % 1000000007) * ((a) % 1000000007)) % 1000000007;
    a = (((a) % 1000000007) * ((a) % 1000000007)) % 1000000007;
    b /= 2;
  }
  return res;
}
long long fastexpom(long long a, long long b, long long m) {
  long long res = 1;
  while (b > 0) {
    if (b % 2 == 1) res = (((res) % m) * ((a) % m)) % m;
    a = (((a) % m) * ((a) % m)) % m;
    b /= 2;
  }
  return res;
}
long long modinv(long long a, long long m = 1000000007) {
  return fastexpom(a, m - 2, m);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  int n, q;
  cin >> n >> q;
  vector<long long> v, color;
  v.resize(n);
  color.resize(n + 1);
  for (int i = 0; i < n; i++) cin >> v[i];
  for (int i = 0; i < n; i++) {
    cin >> color[i];
  }
  vector<long long> dp;
  for (int i = 0; i < q; i++) {
    long long a, b;
    cin >> a >> b;
    dp.clear();
    dp.resize(n, 0);
    vector<int> ch(1e5 + 10, 0);
    long long bg1 = 0;
    long long bg2 = 0;
    long long ind1 = 0;
    long long ind2 = 0;
    for (int i = 0; i < n; i++) {
      long long om;
      if (ind1 == color[i])
        om = bg2;
      else
        om = bg1;
      if (ch[color[i]]) {
        dp[color[i]] =
            max(max(dp[color[i]], dp[color[i]] + v[i] * a), om + v[i] * b);
      } else {
        dp[color[i]] = om + v[i] * b;
        ch[color[i]] = 1;
      }
      if (dp[color[i]] > bg1) {
        if (ind1 != color[i]) {
          bg2 = bg1;
          ind2 = ind1;
        }
        bg1 = dp[color[i]];
        ind1 = color[i];
      } else {
        if (dp[color[i]] > bg2 && ind1 != color[i]) {
          bg2 = dp[color[i]];
          ind2 = color[i];
        }
      }
    }
    cout << bg1 << "\n";
    ;
  }
  return 0;
}
