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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include<iostream>
#include<string>

using namespace std;

int nww(int n, int m){
    if(m>n){
        int temp=m;
        m=n;
        n=temp;
    };
    int m0=m;
    while(m%n!=0){
        m=m+m0;
    };
    return m;
}

int rozwiaz(int n, int m, int a[], int w[]){
    bool czy_skonczony=0;
    int b[n];
    for(int i=0;i<n;i++)
        b[i]=a[i];
    int k=0;
    for(int i=0;i<nww(n,m);i++){
        a[k]=a[k]+w[i%m];
        if(a[k]==0)
            return i+1;

        if(k+1==n)
            k=0;
        else k++;
    };

    for(int i=0;i<n;i++)
        if(a[i]<b[i]){
            czy_skonczony=1;
            break;
        };
    if(czy_skonczony){
        k=0;
        for(int i=0;i<m*1000000;i++){
            a[k]=a[k]+w[i%m];
            if(a[k]==0)
                return nww(n,m)+i+1;
            if(k+1==n)
                k=0;
            else k++;
        };

    }
    else return -1;
}

int main(){

    int n,m;
    int a[n];
    string w,x;
    int b[m];

    cin>>n;
    cin.ignore();
    for(int i=0;i<n;i++)
        cin>>a[i];

    cin>>m;
    cin.ignore();
    getline(cin,w);

    for(int i=0;i<m;i++){
        if(w[i]=='W')
            b[i]=1;
        else
            b[i]=-1;
    };

    cout<<rozwiaz(n,m,a,b);

    return 0;
}