#include <bits/stdc++.h>
using namespace std;
long long v[int(2e5) + 10], c[int(2e5) + 10], dp[int(2e5) + 10];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, q;
  cin >> n >> q;
  for (int i = 0; i < n; i++) cin >> v[i];
  for (int i = 0; i < n; i++) cin >> c[i], c[i]--;
  while (q--) {
    long long a, b;
    cin >> a >> b;
    long long max1 = -1, max2 = -1, ind1 = -1, ind2 = -1;
    for (int i = 0; i < n; i++) dp[i] = -1e18 / 4;
    for (int i = 0; i < n; i++) {
      if (dp[c[i]] >= -1e18 / 10) {
        long long tk = (c[i] == ind1) ? (max2) : (max1);
        dp[c[i]] =
            max(dp[c[i]], max(dp[c[i]] + v[i] * a, max(tk, 0LL) + v[i] * b));
      } else {
        long long tk = (c[i] == ind1) ? (max2) : (max1);
        dp[c[i]] = max(dp[c[i]], max(tk, 0LL) + v[i] * b);
      }
      if (dp[c[i]] > max1) {
        if (c[i] != ind1) {
          max2 = max1, ind2 = ind1;
        }
        max1 = dp[c[i]];
        ind1 = c[i];
      } else if (dp[c[i]] >= max2 && c[i] != ind1)
        max2 = dp[c[i]], ind2 = c[i];
    }
    long long ans = 0;
    for (int i = 0; i < n; i++) ans = max(dp[c[i]], ans);
    cout << ans << '\n';
  }
}
