제출 #1087419

#제출 시각아이디문제언어결과실행 시간메모리
1087419m5588ohammedRPS string (innopolis2021_final_C)C++14
37 / 100
48 ms37252 KiB
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define int long long #define mod 998244353 int PP[500002],RP[500002],SP[500002],ans[500002],L[500002],R[500002]; int PS[500002],RS[500002],SS[500002]; char P1,S1,R1; string s; int n,d; void ers(){ for(int i=1;i<=n+1;i++) PP[i]=RP[i]=SP[i]=PS[i]=RS[i]=SS[i]=L[i]=R[i]=0; return; } void ERS(){ for(int i=1;i<=n+1;i++) PP[i]=RP[i]=SP[i]=L[i]=R[i]=ans[i]=0; return; } void type1(int k){ if(RP[k]>0&&PP[k]>0){ if(RS[k]>0&&PS[k]>0) ans[k]=1; if(RS[k]==0) ans[k]=1; } if(RP[k]==0){ if(RS[k]>0&&PS[k]>0) ans[k]=1; if(RS[k]==0) ans[k]=1; } return; } void type2(int k){ } void build(){ ers(); for(int i=1;i<=n;i++){ if(s[i-1]==S1) SP[i]++; if(s[i-1]==P1) PP[i]++; if(s[i-1]==R1) RP[i]++; RP[i]+=RP[i-1]; SP[i]+=SP[i-1]; PP[i]+=PP[i-1]; } for(int i=n;i>=1;i--){ if(s[i-1]==S1) SS[i]++; if(s[i-1]==P1) PS[i]++; if(s[i-1]==R1) RS[i]++; RS[i]+=RS[i+1]; SS[i]+=SS[i+1]; PS[i]+=PS[i+1]; } for(int i=1;i<=n;i++){ if(s[i-1]==S1){ if(d==1) type1(i); else type2(i); } } return; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int t; cin>>t; while(t--){ cin>>d>>s; n=s.size(); ERS(); S1='s',P1='p',R1='r'; build(); S1='p',P1='r',R1='s'; build(); S1='r',P1='s',R1='p'; build(); for(int i=1;i<=n;i++) cout<<ans[i]; cout<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...