// Po 1 punkt ;-) #include <bits/stdc++.h> using namespace std; char G[1000001]; long long a, b, m, n, O[1000000]; int main() { scanf("%lld", &n); for (int i = 0; i < n; ++i) { scanf("%lld", O + i); } scanf("%lld %s", &m, G); a = 1; for (int i = 0; i < m && a; ++i) { a = G[i] == 'W'; } if (a) { puts("-1"); return 0; } if (n % m == 0) { a = -1; for (int i = 0, j = 0; i < n; ++i) { if (G[j] == 'P') { b = (O[i] - 1) * n + i + 1; if (a == -1 || b < a) { a = b; } } ++j; if (j >= m) { j = 0; } } printf("%lld\n", a); return 0; } a = b = 0; for (int i = 1; i <= 100000000; ++i) { if (G[b] == 'W') { ++O[a]; } else { --O[a]; } if (O[a] <= 0) { printf("%d\n", i); return 0; } ++a; if (a >= n) { a = 0; } ++b; if (b >= m) { b = 0; } } puts("-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 | // Po 1 punkt ;-) #include <bits/stdc++.h> using namespace std; char G[1000001]; long long a, b, m, n, O[1000000]; int main() { scanf("%lld", &n); for (int i = 0; i < n; ++i) { scanf("%lld", O + i); } scanf("%lld %s", &m, G); a = 1; for (int i = 0; i < m && a; ++i) { a = G[i] == 'W'; } if (a) { puts("-1"); return 0; } if (n % m == 0) { a = -1; for (int i = 0, j = 0; i < n; ++i) { if (G[j] == 'P') { b = (O[i] - 1) * n + i + 1; if (a == -1 || b < a) { a = b; } } ++j; if (j >= m) { j = 0; } } printf("%lld\n", a); return 0; } a = b = 0; for (int i = 1; i <= 100000000; ++i) { if (G[b] == 'W') { ++O[a]; } else { --O[a]; } if (O[a] <= 0) { printf("%d\n", i); return 0; } ++a; if (a >= n) { a = 0; } ++b; if (b >= m) { b = 0; } } puts("-1"); return 0; } |