#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<string> using namespace std; int n,m,hajs[1000009]; char s[1000009]; int NWD(int a, int b){ while(a!=0 && b!=0){ if(a>=b) a%=b; else b%=a; } return a+b; }; main() { scanf("%d", &n); for(int i=0; i<n; i++){ scanf("%d", &hajs[i]); } scanf("%d", &m); scanf("%s", s); bool x=0; int d=NWD(n,m); long long int licz=0; for(int i=0; i<n/d; i++){ for(int j=0; j<m; j++){ licz++; if(s[j]=='W') hajs[(j+i*m)%n]++; else{ hajs[(j+i*m)%n]--; if(hajs[(j+i*m)%n]==0){ x=1; break; } } } if(x==1) break; } if(x==0) printf("-1\n"); else printf("%d\n", licz); 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 | #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<string> using namespace std; int n,m,hajs[1000009]; char s[1000009]; int NWD(int a, int b){ while(a!=0 && b!=0){ if(a>=b) a%=b; else b%=a; } return a+b; }; main() { scanf("%d", &n); for(int i=0; i<n; i++){ scanf("%d", &hajs[i]); } scanf("%d", &m); scanf("%s", s); bool x=0; int d=NWD(n,m); long long int licz=0; for(int i=0; i<n/d; i++){ for(int j=0; j<m; j++){ licz++; if(s[j]=='W') hajs[(j+i*m)%n]++; else{ hajs[(j+i*m)%n]--; if(hajs[(j+i*m)%n]==0){ x=1; break; } } } if(x==1) break; } if(x==0) printf("-1\n"); else printf("%d\n", licz); return 0; } |