#include <iostream>
using namespace std;
int tab1[1000050];
bool sprawdzenie [1000050];
int tab2[1000050];
int n,k,nwd,it1,it2,cykle;
char wczytaj;
int Nwd ( int a, int b ){
if ( b == 0 ) return a;
return Nwd( b, a % b );
}
bool sprawdz (int n, int tab1[], int tab2[] ){
for ( int i = 0; i < n; i++)
if ( tab2[i] < tab1[i] ) return true;
return false;
}
int main (){
cin>>n;
for ( int i = 0; i < n; i++) cin>> tab1[i];
cin>>k;
for ( int i = 0; i < k; i++){
cin>>wczytaj;
if ( wczytaj == 'W') sprawdzenie[i] = true;
}
for ( int i = 0; i < n; i++ )tab2[i] = tab1[i];
( n > k )? nwd = Nwd ( n , k ) : nwd = Nwd ( k, n ); nwd = n/nwd*k;
while ( 1 ) {
if ( sprawdzenie [ it2 % k ] == true ) {
tab2[ it1 % n ]++;
it1++; it2++; cykle++;
}
else if ( sprawdzenie [ it2 % k ] == false ) {
tab2[ it1 % n ]--;
cykle++;
if ( tab2[ it1 % n ] == 0 ) {
cout<< cykle;
return 0;
}
it1++; it2++;
}
if ( cykle == nwd )
if ( sprawdz ( n, tab1, tab2 ) == false ) { cout<<-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 | #include <iostream> using namespace std; int tab1[1000050]; bool sprawdzenie [1000050]; int tab2[1000050]; int n,k,nwd,it1,it2,cykle; char wczytaj; int Nwd ( int a, int b ){ if ( b == 0 ) return a; return Nwd( b, a % b ); } bool sprawdz (int n, int tab1[], int tab2[] ){ for ( int i = 0; i < n; i++) if ( tab2[i] < tab1[i] ) return true; return false; } int main (){ cin>>n; for ( int i = 0; i < n; i++) cin>> tab1[i]; cin>>k; for ( int i = 0; i < k; i++){ cin>>wczytaj; if ( wczytaj == 'W') sprawdzenie[i] = true; } for ( int i = 0; i < n; i++ )tab2[i] = tab1[i]; ( n > k )? nwd = Nwd ( n , k ) : nwd = Nwd ( k, n ); nwd = n/nwd*k; while ( 1 ) { if ( sprawdzenie [ it2 % k ] == true ) { tab2[ it1 % n ]++; it1++; it2++; cykle++; } else if ( sprawdzenie [ it2 % k ] == false ) { tab2[ it1 % n ]--; cykle++; if ( tab2[ it1 % n ] == 0 ) { cout<< cykle; return 0; } it1++; it2++; } if ( cykle == nwd ) if ( sprawdz ( n, tab1, tab2 ) == false ) { cout<<-1; return 0; } } } |
English