#include <bits/stdc++.h>
using namespace std;
template <typename Iter>
ostream& _out(ostream& s, Iter a, Iter b) {
  for (auto it = a; it != b; it++) s << (it == a ? "" : " ") << *it;
  return s;
}
template <typename A, typename B>
ostream& operator<<(ostream& s, pair<A, B>& p) {
  return s << "(" << p.first << " , " << p.second << ")";
}
template <typename T>
ostream& operator<<(ostream& s, vector<T>& v) {
  return _out(s, v.begin(), v.end());
}
inline long long rit() {
  int key = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') key = -1;
    c = getchar();
  }
  long long x = 0;
  while (isdigit(c)) {
    x = x * 10 + c - '0';
    c = getchar();
  }
  return x * key;
}
int __ = 1;
void init() {}
void read() {}
void solve() {}
int main() {
  int a, b, c, n;
  vector<int> x, y, z;
  cin >> a >> b >> c >> n;
  for (int i = 0; i < n; i++) {
    int res;
    string s;
    cin >> res >> s;
    if (s[0] == 'U')
      x.push_back(res);
    else
      y.push_back(res);
  }
  sort(x.begin(), x.end());
  sort(y.begin(), y.end());
  long long ans = 0;
  int cnt = 0;
  for (int i = 0; i < min((int)x.size(), a); i++) {
    ans += x[i];
    cnt++;
  }
  for (int i = 0; i < min((int)y.size(), b); i++) {
    ans += y[i];
    cnt++;
  }
  for (int i = a; i < x.size(); i++) {
    z.push_back(x[i]);
  }
  for (int i = b; i < y.size(); i++) {
    z.push_back(y[i]);
  }
  sort(z.begin(), z.end());
  for (int i = 0; i < min((int)z.size(), c); i++) {
    ans += z[i];
    cnt++;
  }
  printf("%d %I64d\n", cnt, ans);
  return 0;
}
