#include <cstdio> #include <algorithm> #include <vector> #include <stack> using namespace std; int fund[1000005]; bool wyg[1000005]; int nwd (int a, int b) { if (b) return nwd(b,a%b); return a; } int main() { int n,m,a,b,c,d,e,f; char x; long long y; scanf ("%d", &n); for (a=0; a<n; a++) scanf ("%d", &fund[a]); scanf ("%d", &m); getchar(); for (a=0; a<m; a++) { x=getchar(); if (x=='W') wyg[a]=1; } y=(long long)n*m; y/=nwd(n,m); b=0; for (a=0; a<50000000; a++) { if (b==n) b=0; if (wyg[a%m]) fund[b]++; else fund[b]--; if (fund[b]==0) { printf ("%d", a+1); return 0; } b++; } printf ("-1"); return 0; }
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 | #include <cstdio> #include <algorithm> #include <vector> #include <stack> using namespace std; int fund[1000005]; bool wyg[1000005]; int nwd (int a, int b) { if (b) return nwd(b,a%b); return a; } int main() { int n,m,a,b,c,d,e,f; char x; long long y; scanf ("%d", &n); for (a=0; a<n; a++) scanf ("%d", &fund[a]); scanf ("%d", &m); getchar(); for (a=0; a<m; a++) { x=getchar(); if (x=='W') wyg[a]=1; } y=(long long)n*m; y/=nwd(n,m); b=0; for (a=0; a<50000000; a++) { if (b==n) b=0; if (wyg[a%m]) fund[b]++; else fund[b]--; if (fund[b]==0) { printf ("%d", a+1); return 0; } b++; } printf ("-1"); return 0; } |