#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; } |
English