#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int n;
int a[maxn];
char s[maxn];
char s1[maxn];
long long sum[maxn];
long long sumtmp[maxn];
long long dfs(int x, char s[]) {
  if (x == -1) {
    return 0;
  }
  if (s[x] == '1') {
    long long tmp1 = dfs(x - 1, s) + a[x];
    long long tmp2 = sum[x - 1];
    return max(tmp1, tmp2);
  }
  if (s[x] == '0') return dfs(x - 1, s);
}
int main() {
  while (scanf("%d", &n) == 1) {
    for (int i = 0; i < n; i++) scanf("%d", &a[i]);
    for (int i = 0; i < n; i++) s1[i] = '1';
    scanf("%s", s);
    sum[0] = a[0];
    for (int i = 1; i < n; i++) sum[i] = sum[i - 1] + a[i];
    cout << dfs(n - 1, s) << endl;
  }
  return 0;
}
