#include <bits/stdc++.h>
template <class T>
T abst(const T &n) {
  return (n < 0 ? -n : n);
}
template <class T>
T max3(const T &a, const T &b, const T &c) {
  return max2(a, max2(b, c));
}
template <class T>
T min3(const T &a, const T &b, const T &c) {
  return min2(a, min2(b, c));
}
template <class T>
T gcd(const T a, const T b) {
  return (b ? gcd<T>(b, a % b) : a);
}
template <class T>
T lcm(const T a, const T b) {
  return (a / gcd<T>(a, b) * b);
}
template <class T>
T sq(const T &x) {
  return x * x;
}
using namespace std;
int a[100005], sum[100005];
int main() {
  int n, i, ans = 0, aux = 0;
  scanf("%d", &n);
  for (i = 1; i < n + 1; i++) scanf("%d", &a[i]);
  reverse(a + 1, a + n + 1);
  for (i = 1; i < n + 1; i++) sum[i] = sum[i - 1] + a[i];
  char str[100005];
  getchar();
  gets(str);
  int size = strlen(str);
  reverse(str, str + size);
  for (i = 1; i < size + 1; i++) {
    if (str[i - 1] == '1') {
      ans = max(max(ans, aux + a[i]), sum[n] - sum[i] + aux);
      aux += a[i];
    }
  }
  printf("%d", ans);
  puts("");
  return 0;
}
