// // main.cpp // hazard_brut // // Created by Marcin Wierzbicki on 01.10.2015. // #include <cstdio> using namespace std; int main() { bool ok=false; int wsk=-1,mincykl=1000000009,tempp; long long n,k; scanf("%lld",&n); int tab[n]; long long tabb[n]; for (int i=0; i<n; i++) { scanf("%d",&tab[i]); tabb[i]=tab[i]; } scanf("%lld",&k); char tekst[k]; scanf("%s",tekst); for (int i=0; i<k; i++) { for (int j=0; j<n; j++) { wsk++; if (wsk==k) { wsk=0; } if (tekst[wsk]=='W') { tabb[j]++; } else { tabb[j]--; } if (tabb[j]==0) { printf("%lld",(n*i)+j+1); return 0; } } } wsk=-1; for (int i=0; i<n; i++) { if (tab[i]-tabb[i]>0) { ok=true; tempp=tab[i]/(tab[i]-tabb[i]); if (tab[i]%(tab[i]-tabb[i])!=0) { tempp++; } if (tempp<mincykl) { mincykl=tempp; } } } if (ok==false) { printf("%d",-1); return 0; } mincykl--; if (mincykl!=1) { for (int i=0; i<n; i++) { if (tab[i]-tabb[i]>0) { tabb[i]=tabb[i]-((tab[i]-tabb[i])*(mincykl-1)); } } } for (int i=0; i<k; i++) { for (int j=0; j<n; j++) { wsk++; if (wsk==k) { wsk=0; } if (tekst[wsk]=='W') { tabb[j]++; } else { tabb[j]--; } if (tabb[j]==0) { printf("%lld",(n*k*(mincykl))+((n*i)+j+1)); return 0; } } } 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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | // // main.cpp // hazard_brut // // Created by Marcin Wierzbicki on 01.10.2015. // #include <cstdio> using namespace std; int main() { bool ok=false; int wsk=-1,mincykl=1000000009,tempp; long long n,k; scanf("%lld",&n); int tab[n]; long long tabb[n]; for (int i=0; i<n; i++) { scanf("%d",&tab[i]); tabb[i]=tab[i]; } scanf("%lld",&k); char tekst[k]; scanf("%s",tekst); for (int i=0; i<k; i++) { for (int j=0; j<n; j++) { wsk++; if (wsk==k) { wsk=0; } if (tekst[wsk]=='W') { tabb[j]++; } else { tabb[j]--; } if (tabb[j]==0) { printf("%lld",(n*i)+j+1); return 0; } } } wsk=-1; for (int i=0; i<n; i++) { if (tab[i]-tabb[i]>0) { ok=true; tempp=tab[i]/(tab[i]-tabb[i]); if (tab[i]%(tab[i]-tabb[i])!=0) { tempp++; } if (tempp<mincykl) { mincykl=tempp; } } } if (ok==false) { printf("%d",-1); return 0; } mincykl--; if (mincykl!=1) { for (int i=0; i<n; i++) { if (tab[i]-tabb[i]>0) { tabb[i]=tabb[i]-((tab[i]-tabb[i])*(mincykl-1)); } } } for (int i=0; i<k; i++) { for (int j=0; j<n; j++) { wsk++; if (wsk==k) { wsk=0; } if (tekst[wsk]=='W') { tabb[j]++; } else { tabb[j]--; } if (tabb[j]==0) { printf("%lld",(n*k*(mincykl))+((n*i)+j+1)); return 0; } } } return 0; } |