#include<iostream> using namespace std; int T[1000005]; char C[1000005]; int gcd(int a, int b) { int c; while(b) { c = a % b; a = b; b = c; } return a; } long long lcm(int a, int b) { return 1ll * a * b / gcd(a, b); } int main() { ios_base::sync_with_stdio(0); int n; cin >> n; for (int i = 0; i < n; i++) cin >> T[i]; int m; cin >> m; for (int i = 0; i < m; i++) cin >> C[i]; long long _lcm = lcm(n, m); for (int i = 0; ; i++) { if (C[i % m] == 'W') T[i % n]++; else T[i % n]--; if (T[i % n] == 0) { cout << i + 1 << "\n"; break; } if (i > _lcm) { cout << "-1\n"; break; } } 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 | #include<iostream> using namespace std; int T[1000005]; char C[1000005]; int gcd(int a, int b) { int c; while(b) { c = a % b; a = b; b = c; } return a; } long long lcm(int a, int b) { return 1ll * a * b / gcd(a, b); } int main() { ios_base::sync_with_stdio(0); int n; cin >> n; for (int i = 0; i < n; i++) cin >> T[i]; int m; cin >> m; for (int i = 0; i < m; i++) cin >> C[i]; long long _lcm = lcm(n, m); for (int i = 0; ; i++) { if (C[i % m] == 'W') T[i % n]++; else T[i % n]--; if (T[i % n] == 0) { cout << i + 1 << "\n"; break; } if (i > _lcm) { cout << "-1\n"; break; } } return 0; } |