#include<iostream> #include<vector> #include<string> using namespace std; int main(){ int n, m, buf; cin>>n; vector<int> kieszonkowe(n); vector<int> bufor(n); for(int i=0; i<n; ++i){ cin>>kieszonkowe[i]; } buf = kieszonkowe.size(); bufor = kieszonkowe; cin>>m; string cykl; cin>>cykl; bool koniec = false; int licz_s=0, licz_ch=0, licz_niesk_s=0; long long licz_gry =0; while(koniec == false){ if(cykl[licz_s]=='P'){ kieszonkowe[licz_ch]--; }else{ kieszonkowe[licz_ch]++; } if(licz_s == 0 && licz_ch == 0 && licz_niesk_s>0){ for(int i=0; i<bufor.size(); ++i){ if(bufor[i]<=kieszonkowe[i]){ buf--; } } if(buf==0){ licz_gry = -1; koniec = true; continue; } } licz_gry++; if(kieszonkowe[licz_ch]==0){ koniec = true; continue; } if(licz_s!=cykl.size()-1){ licz_s++; }else{ licz_s = 0; } if(licz_s-1 == 0){ licz_niesk_s++; } if(licz_ch!=n-1){ licz_ch++; }else{ licz_ch = 0; } } cout<<licz_gry; 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 | #include<iostream> #include<vector> #include<string> using namespace std; int main(){ int n, m, buf; cin>>n; vector<int> kieszonkowe(n); vector<int> bufor(n); for(int i=0; i<n; ++i){ cin>>kieszonkowe[i]; } buf = kieszonkowe.size(); bufor = kieszonkowe; cin>>m; string cykl; cin>>cykl; bool koniec = false; int licz_s=0, licz_ch=0, licz_niesk_s=0; long long licz_gry =0; while(koniec == false){ if(cykl[licz_s]=='P'){ kieszonkowe[licz_ch]--; }else{ kieszonkowe[licz_ch]++; } if(licz_s == 0 && licz_ch == 0 && licz_niesk_s>0){ for(int i=0; i<bufor.size(); ++i){ if(bufor[i]<=kieszonkowe[i]){ buf--; } } if(buf==0){ licz_gry = -1; koniec = true; continue; } } licz_gry++; if(kieszonkowe[licz_ch]==0){ koniec = true; continue; } if(licz_s!=cykl.size()-1){ licz_s++; }else{ licz_s = 0; } if(licz_s-1 == 0){ licz_niesk_s++; } if(licz_ch!=n-1){ licz_ch++; }else{ licz_ch = 0; } } cout<<licz_gry; return 0; } |