#P1007. G. 我是猜拳大王

G. 我是猜拳大王

G. 我是猜拳大王

题目描述

这是一道交互题。

放学路上,高木同学和西片在玩猜拳游戏。

游戏中,高木同学总是能猜中西片的内心。西片一连输掉几局后,高木同学提出:接下来的比试,我只会出"石头"(R)和"布"(P)

在猜拳比赛中,获胜的一方记一分,失败的一方扣一分,平局则双方均不加分。其中:石头(R)能赢过剪刀(S),剪刀(S)能赢过布(P),布(P)又能胜过石头(R)。

你能帮助西片,取得尽可能高的分数吗?

输入格式

第一行两个整数 $n(10^3\le n\le 20000), m(-\frac{3n}{10}\le m\le \frac{3n}{10})$,表示你需要进行 nn 场比试,结束后你需要获得至少 mm 分。

样例仅作为演示,并不符合n103n\ge 10^3这一要求。

交互方式

如果你需要进行一次猜拳,你 必须 输入一个字符 "R"、"P"或 "S",分别表示石头、布或剪刀。

在输出结束,并刷新缓冲区后,你可以从标准输入中读取高木同学的选择,包括一个字符"R"或者"P"。当然,你也可以忽略这一信息。

注意,在输出结束后,你 必须 刷新缓冲区。 例如,

  • 在C++ 中你可以使用 fflush(stdout)。
  • 在Java 中你可以使用 System.out.flush()。
  • 在Pascal中你可以使用flush(output)
  • 在Python中你可以使用 sys.stdout.flush()

Takagi-san 不会根据你的出拳结果更改策略。

样例输入

3 0

R

P

R

样例输出

R

S

P

数据范围与约定

对于前 25%25\% 的数据,m=3n10m = -\frac{3n}{10}

对于中间 25%25\% 的数据,m=0m = 0

对于后 50%50\% 的数据,m=3n10m = \frac{3n}{10}

C语言示例代码

#include <stdio.h>

int main()
{
	int n, m; 
	scanf("%d%d", &n, &m);
	for(int i=1;i<=n;i++)
	{
	    printf("R\n");
	    fflush(stdout);// 注意,不要忘记刷新缓冲区!
	    char c; scanf("%c", &c); // 这是从评测机获取的,高木同学的出拳结果
	}
 	return 0;
}

C++示例代码

#include <iostream>

int main()
{
	int n, m; 
	std::cin >> n >> m;
	for(int i=1;i<=n;i++)
	{
	    std::cout << "R" << std::endl; // cout << endl 之后,会自动刷新缓冲区。
	    char c; std::cin >> c; // 这是从评测机获取的,高木同学的出拳结果
	}
 	return 0;
}

Python 示例代码

n, m = map(int, input().split())
for i in range(1, n+1):
    print("R")
    sys.stdout.flush()  
    c = input()