QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#624053#8046. Rock-Paper-Scissors PyramidREN5511WA 0ms3604kbC++141.9kb2024-10-09 14:50:012024-10-09 14:50:02

Judging History

你现在查看的是最新测评结果

  • [2024-10-09 14:50:02]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3604kb
  • [2024-10-09 14:50:01]
  • 提交

answer

#include <iostream>
#include <vector>
using namespace std;
string tar;
char win(char p1,char p2) {
    if (p1 == 'S') {
        if (p2 == 'S') {
            return 'S';
        }
        else if (p2 == 'P') {
            return 'S';
        }
        else {
            return 'R';
        }
    }
    else if (p1 == 'P') {
        if (p2 == 'S') {
            return 'S';
        }
        else if (p2 == 'P') {
            return 'P';
        }
        else {
            return 'P';
        }
    }
    else {
        if (p2== 'S') {
            return 'R';
        }
        else if (p2 == 'P') {
            return 'P';
        }
        else {
            return 'R';
        }
    }
    return '$';
}
char solve(int l,int r) {
    if (r - l+1 <= 2) {
        return win(tar[r], tar[l]);
    }
    int midl = (l + r) / 2, midr = (l + r) / 2 + 1;
    if ((r - l + 1) % 2) {
        int mid = midl;
        midl--;
        char a= solve(l, midl), b= solve(midr, r);
        return win(win(a, tar[mid]), win(b, tar[mid]));
        //if (win(a, tar[mid]) != tar[mid]) {
        //    return a;
        //}
        //else if (win(b, tar[mid]) != tar[mid]) {
        //    return b;
        //}
        //else {
        //    return win(win(a, tar[mid]), win(b, tar[mid]));
        //}
    }
    else {
        //char who = win(tar[midl], tar[midr]);
        return win(solve(l, midl), solve(midr, r));
        //if (who == tar[midl] && who == tar[midr]) {
        //    return win(solve(l, midl), solve(midr, r));
        //}
        //else if (who == tar[midl]) {
        //    return solve(l, midl);
        //}
        //else {
        //    return solve(midr, r);
        //}
    }
}
int main()
{
    int t;
    cin >> t;
    while (t--) {
        cin >> tar;
        tar = '$' + tar;
        cout<<solve(1, tar.size()-1)<<"\n";
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3604kb

input:

2
SPR
SPSRRP

output:

S
S

result:

wrong answer 2nd lines differ - expected: 'P', found: 'S'