QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#537356 | #8046. Rock-Paper-Scissors Pyramid | rotcar07 | WA | 20ms | 9532kb | C++14 | 1.1kb | 2024-08-30 10:49:00 | 2024-08-30 10:49:00 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;cin>>t;
while(t--){
vector<int> v;
string s;cin>>s;
auto trans=[&](char c){if(c=='R')return 0;if(c=='P')return 1;return 2;};
v.push_back(trans(s[0]));
for(int i=1;i<s.size();i++)if(s[i]!=s[i-1]) v.push_back(trans(s[i]));
if(v.size()==1)cout<<"RPS"[v[0]]<<'\n';
else{
int a=v[0],b=v[1];
stack<int> st;
int sb=-1;
auto win=[&](int x,int y){return x==(y+1)%3;};
for(int i=2;i<v.size();i++){
if(i==b)continue;
while(!st.empty()&&win(a,st.top())) st.pop();
if(st.empty()) sb=-1;
if(win(b,a)) a=b,b=v[i];
else{
if(win(v[i],b)) swap(a,b);
else st.push(a),sb=(~sb?sb:a),a=b,b=v[i];
}
}
while(!st.empty()&&win(a,st.top())) st.pop();
if(st.empty()) sb=-1;
if(~sb) cout<<"RPS"[sb]<<'\n';
else cout<<"RPS"[win(a,b)?a:b]<<'\n';
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3516kb
input:
2 SPR SPSRRP
output:
S P
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 20ms
memory: 9532kb
input:
1 RPPSRPPRSRSRRRPPSPRPRSRRSRRPPPRSPSSRRRSPPPRRRPRRRSSRPSSRPRRPSRRRPRSRPSRPSRRSPPRPRRRSPRSSSRPRRRPPSRRRRPPSRSRRRPRPRPRPPRRSRRPSRPPSRRRSRRSRRSPSRPRPSPSSRRSPSPSRPRRRPPRSRSPSPPRRPRSRPPSSSRPSPRRPSSSPRRSRRSRRSRSPSSSSRSSPPRRRRPRRRSPSRSPRSSPRSPSPRPRRRPPRPPRPPPSRRRRSSPRRSRRRPRRRSSRRPSRPPRSPPSPPPSPSPSPPSSPRRR...
output:
P
result:
wrong answer 1st lines differ - expected: 'R', found: 'P'