#include<iostream> #include<cstdio> using namespace std; #define MX 1000020 #define int long long int t[MX]; int w[MX]; int p[MX]; int q[MX]; int nwd(int a,int b){ if(a%b==0) return b; return nwd(b,a%b); } #define int int int main(){ #define int long long int n,m; int i; cin>>n; char ch; for(i=1;i<=n;++i){ cin>>t[i]; q[i]=t[i]; } cin>>m; for(i=1;i<=m;++i){ cin>>ch; if(ch=='W'){ w[i]=1; } else{ w[i]=-1; } } int nww=(n*m)/nwd(n,m); //printf("nww=%d\n",nww); #ifdef druk for(i=1;i<=n;++i){ printf("%d ",t[i]); } printf("\n"); for(i=1;i<=m;++i){ printf("%c ",w[i]); } #endif int u=1; int d=1; for(i=1;i<=nww;++i){ q[u]+=w[d]; //printf("q[%d]=%d\n",u,q[u]); if(q[u]==0){ printf("%lld",i); return 0; } ++u; ++d; if(u>n)u-=n; if(d>m)d-=m; } int da=0; for(i=1;i<=n;++i){ // printf("q[%d]=%d\n",i,q[i]); if(q[i]<t[i]) da=1; } if(da==0){ printf("-1"); return 0; } //printf("=%d %d\n",u,d); int wyn=nww; while(1){ ++wyn; q[u]+=w[d]; if(q[u]==0){ printf("%lld",wyn); return 0; } ++u; ++d; if(u>n)u-=n; if(d>m)d-=m; } }
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 89 90 91 | #include<iostream> #include<cstdio> using namespace std; #define MX 1000020 #define int long long int t[MX]; int w[MX]; int p[MX]; int q[MX]; int nwd(int a,int b){ if(a%b==0) return b; return nwd(b,a%b); } #define int int int main(){ #define int long long int n,m; int i; cin>>n; char ch; for(i=1;i<=n;++i){ cin>>t[i]; q[i]=t[i]; } cin>>m; for(i=1;i<=m;++i){ cin>>ch; if(ch=='W'){ w[i]=1; } else{ w[i]=-1; } } int nww=(n*m)/nwd(n,m); //printf("nww=%d\n",nww); #ifdef druk for(i=1;i<=n;++i){ printf("%d ",t[i]); } printf("\n"); for(i=1;i<=m;++i){ printf("%c ",w[i]); } #endif int u=1; int d=1; for(i=1;i<=nww;++i){ q[u]+=w[d]; //printf("q[%d]=%d\n",u,q[u]); if(q[u]==0){ printf("%lld",i); return 0; } ++u; ++d; if(u>n)u-=n; if(d>m)d-=m; } int da=0; for(i=1;i<=n;++i){ // printf("q[%d]=%d\n",i,q[i]); if(q[i]<t[i]) da=1; } if(da==0){ printf("-1"); return 0; } //printf("=%d %d\n",u,d); int wyn=nww; while(1){ ++wyn; q[u]+=w[d]; if(q[u]==0){ printf("%lld",wyn); return 0; } ++u; ++d; if(u>n)u-=n; if(d>m)d-=m; } } |