1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <cstdio>
#include <climits>

using namespace std;

const int MAX = 1000005;

char pattern[MAX];
int beginValues[MAX];
int n, m;

void get() {
    scanf("%d\n", &n);
    for (int i = 0; i < n; ++i) {
        scanf("%d", &beginValues[i]);
    }
    scanf("%d", &m);
    scanf("%s", pattern);
}


int main() {
    get();
    int sum = 0;
    for (int i = 0; i < m; ++i) {
        sum += pattern[i] == 'W' ? 1 : -1;
    }
    int k = 1, i = 0, j = 0;
    while(k < INT_MAX) {

        beginValues[i] += (pattern[j] == 'W' ? 1 : - 1);

        if (beginValues[i] == 0) {
            printf("%d\n", k);
            return 0;
        }
        if ((long long)m * n < k && sum >= 0) {
            printf("%d\n", -1);
            return 0;
        }
        i = (i + 1) % n;
        j = (j + 1) % m;
        k++;
    }
    printf("%d", -1);
    return 0;
    
}