#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 1e18; #define maxn 1000100 int n, hajs[maxn], m, t[maxn]; const int cst = 1e5; int ile; int main() { scanf("%d", &n); for (int i=1; i<=n; ++i) scanf("%d", &hajs[i]); scanf("%d", &m); for (int i=1; i<=m; ++i) { char zn; scanf(" %c", &zn); if (zn == 'W') t[i] = 1; else t[i] = -1; } ll WYN = INF; for (int i=1; i<=n; ++i) { //printf("i: %d\n", i); ile = 0; int op = 0; int j = (i % m); if (j == 0) j = m; while (hajs[i] > 0 && op <= cst) { hajs[i] += t[j]; if (hajs[i] <= 0) break; j = (j + n) % m; if (j == 0) j = m; ile += n; ++op; } if (op <= cst) WYN = min(WYN, (ll)ile + i); } if (WYN == INF) puts("-1"); else printf("%lld", WYN); }
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 1e18; #define maxn 1000100 int n, hajs[maxn], m, t[maxn]; const int cst = 1e5; int ile; int main() { scanf("%d", &n); for (int i=1; i<=n; ++i) scanf("%d", &hajs[i]); scanf("%d", &m); for (int i=1; i<=m; ++i) { char zn; scanf(" %c", &zn); if (zn == 'W') t[i] = 1; else t[i] = -1; } ll WYN = INF; for (int i=1; i<=n; ++i) { //printf("i: %d\n", i); ile = 0; int op = 0; int j = (i % m); if (j == 0) j = m; while (hajs[i] > 0 && op <= cst) { hajs[i] += t[j]; if (hajs[i] <= 0) break; j = (j + n) % m; if (j == 0) j = m; ile += n; ++op; } if (op <= cst) WYN = min(WYN, (ll)ile + i); } if (WYN == INF) puts("-1"); else printf("%lld", WYN); } |