CF1903E.Geo Game
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
This is an interactive problem.
Theofanis and his sister are playing the following game.
They have n points in a 2D plane and a starting point (sx,sy) . Each player (starting from the first player) chooses one of the n points that wasn't chosen before and adds to the sum (which is initially 0 ) the square of the Euclidean distance from the previous point (which is either the starting point or it was chosen by the other person) to the new point (that the current player selected).
The game ends after exactly n moves (after all the points are chosen). The first player wins if the sum is even in the end. Otherwise, the second player wins.
Theofanis is a very competitive person and he hates losing. Thus, he wants to choose whether he should play first or second. Can you show him, which player to choose, and how he should play to beat his sister?
输入格式
The first line contains a single integer t ( 1≤t≤2000 ) — the number of test cases.
The data for each test case is only available after the end of the interaction (the end of the game) for all previous test cases.
The first line of each test case contains a single integer n ( 1≤n≤105 ) — the number of points.
The second line of each test case contains two integers sx , sy ( 0≤sx,sy≤109 ) — the coordinates of the starting point.
Two or more points may have the same coordinates.
The i -th of the following n lines contains two integers xi and yi ( 0≤xi,yi≤109 ) — the coordinates of the i -th point.
It is guaranteed that the sum of n over all test cases does not exceed 105 .
输出格式
For each test case, you should first output the player that you want to play as (First or Second).
Then, you should play the game. When it's your turn, you should output the index j ( 1≤j≤n ) of the point that you want to choose, and when it's the other player's turn, you should read the index that they choose.
When all the turns are done, continue with reading the input for the next test case, or finish the program, if there are none.
If you receive the integer −1 instead of an index or a valid value of n , it means your program has made an invalid move or has lost the game in the previous test case. Your program must terminate immediately to receive a Wrong Answer verdict. Otherwise, you can get an arbitrary verdict because your solution will continue to read from a closed stream.
After printing a choice for a player, or a turn, do not forget to output the end of line and flush the output. Otherwise, you will get Idleness limit exceeded. To do this, use:
- fflush(stdout) or cout.flush() in C++;
- System.out.flush() in Java;
- flush(output) in Pascal;
- stdout.flush() in Python;
- see the documentation for other languages.
Hacks
To hack, use the following format.
The first line contains a single integer t ( 1≤t≤2000 ) — the number of test cases.
The first line of each test case contains a single integer n ( 1≤n≤105 ) — the number of points.
The second line of each test case contains two integers sx , sy ( 0≤sx,sy≤109 ) — the coordinates of the starting point.
The i -th of the following n lines contains two integers xi and yi ( 0≤xi,yi≤109 ) — the coordinates of the i -th point.
The sum of n over all test cases should not exceed 105 .
输入输出样例
输入#1
2 6 4 6 7 6 8 5 2 1 6 2 6 4 3 3 2 5 1 4 1 1 3 2 2 1 3 3 1 2 2 3
输出#1
Second 4 6 3 First 1 4
说明/提示
The examples above do not necessarily showcase optimal strategies or the correct player to choose.
In the picture below, you can see the moves that each player made in the first example. The first player is red, and the second player is black.