#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100010;
int N, M;
int ar[MAXN];
char s[MAXN];
int dn[MAXN][2];
int used[MAXN][2];
int f(int k, int flag) {
  if (k == -1) return 0;
  if (used[k][flag]) return dn[k][flag];
  used[k][flag] = 1;
  if (!flag) return dn[k][flag] = f(k - 1, 0) + ar[k];
  if (s[k] == '0') return dn[k][flag] = f(k - 1, 1);
  if (s[k] == '1') return dn[k][flag] = max(f(k - 1, 1) + ar[k], f(k - 1, 0));
}
int main() {
  cin >> N;
  for (int i = 0; i < N; i++) scanf(" %d", &ar[i]);
  scanf(" %s", s);
  cout << f(N - 1, 1) << endl;
  return 0;
}
