#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
int fund[1000005];
bool wyg[1000005];
int nwd (int a, int b)
{
if (b)
return nwd(b,a%b);
return a;
}
int main()
{
int n,m,a,b,c,d,e,f;
char x;
long long y;
scanf ("%d", &n);
for (a=0; a<n; a++)
scanf ("%d", &fund[a]);
scanf ("%d", &m);
getchar();
for (a=0; a<m; a++)
{
x=getchar();
if (x=='W')
wyg[a]=1;
}
y=(long long)n*m;
y/=nwd(n,m);
b=0;
for (a=0; a<50000000; a++)
{
if (b==n)
b=0;
if (wyg[a%m])
fund[b]++;
else
fund[b]--;
if (fund[b]==0)
{
printf ("%d", a+1);
return 0;
}
b++;
}
printf ("-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 63 64 65 66 67 68 | #include <cstdio> #include <algorithm> #include <vector> #include <stack> using namespace std; int fund[1000005]; bool wyg[1000005]; int nwd (int a, int b) { if (b) return nwd(b,a%b); return a; } int main() { int n,m,a,b,c,d,e,f; char x; long long y; scanf ("%d", &n); for (a=0; a<n; a++) scanf ("%d", &fund[a]); scanf ("%d", &m); getchar(); for (a=0; a<m; a++) { x=getchar(); if (x=='W') wyg[a]=1; } y=(long long)n*m; y/=nwd(n,m); b=0; for (a=0; a<50000000; a++) { if (b==n) b=0; if (wyg[a%m]) fund[b]++; else fund[b]--; if (fund[b]==0) { printf ("%d", a+1); return 0; } b++; } printf ("-1"); return 0; } |
English