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