#include<iostream>
#include<string>
using namespace std;
int nww(int n, int m){
if(m>n){
int temp=m;
m=n;
n=temp;
};
int m0=m;
while(m%n!=0){
m=m+m0;
};
return m;
}
int rozwiaz(int n, int m, int a[], int w[]){
bool czy_skonczony=0;
int b[n];
for(int i=0;i<n;i++)
b[i]=a[i];
int k=0;
for(int i=0;i<nww(n,m);i++){
a[k]=a[k]+w[i%m];
if(a[k]==0)
return i+1;
if(k+1==n)
k=0;
else k++;
};
for(int i=0;i<n;i++)
if(a[i]<b[i]){
czy_skonczony=1;
break;
};
if(czy_skonczony){
k=0;
for(int i=0;i<m*1000000;i++){
a[k]=a[k]+w[i%m];
if(a[k]==0)
return nww(n,m)+i+1;
if(k+1==n)
k=0;
else k++;
};
}
else return -1;
}
int main(){
int n,m;
int a[n];
string w,x;
int b[m];
cin>>n;
cin.ignore();
for(int i=0;i<n;i++)
cin>>a[i];
cin>>m;
cin.ignore();
getline(cin,w);
for(int i=0;i<m;i++){
if(w[i]=='W')
b[i]=1;
else
b[i]=-1;
};
cout<<rozwiaz(n,m,a,b);
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 | #include<iostream> #include<string> using namespace std; int nww(int n, int m){ if(m>n){ int temp=m; m=n; n=temp; }; int m0=m; while(m%n!=0){ m=m+m0; }; return m; } int rozwiaz(int n, int m, int a[], int w[]){ bool czy_skonczony=0; int b[n]; for(int i=0;i<n;i++) b[i]=a[i]; int k=0; for(int i=0;i<nww(n,m);i++){ a[k]=a[k]+w[i%m]; if(a[k]==0) return i+1; if(k+1==n) k=0; else k++; }; for(int i=0;i<n;i++) if(a[i]<b[i]){ czy_skonczony=1; break; }; if(czy_skonczony){ k=0; for(int i=0;i<m*1000000;i++){ a[k]=a[k]+w[i%m]; if(a[k]==0) return nww(n,m)+i+1; if(k+1==n) k=0; else k++; }; } else return -1; } int main(){ int n,m; int a[n]; string w,x; int b[m]; cin>>n; cin.ignore(); for(int i=0;i<n;i++) cin>>a[i]; cin>>m; cin.ignore(); getline(cin,w); for(int i=0;i<m;i++){ if(w[i]=='W') b[i]=1; else b[i]=-1; }; cout<<rozwiaz(n,m,a,b); return 0; } |
English