luogu#P9898. 『PG2』猪棋

『PG2』猪棋

题目背景

交互库绝顶聪明。

题目描述

猪棋的规则:

在一个 1000×10001000\times 1000 的棋盘上,两人分别执黑棋白棋轮流执子,每次可以在当前没有子的不同位置将两颗子分别放下(有序),如果一颗子放下时出现有 (x,y),(x+1,y),(x,y+1),(x+1,y+1)(x,y),(x+1,y),(x,y+1),(x+1,y+1) 的四个位置棋子颜色均相同则执此颜色者获胜。

你将扮演先手,在 100100 步内战胜交互库扮演的后手,保证有解。

对于每轮,你可以选择两个坐标 (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2) 落子,你首先需要保证 1x1,y1,x2,y210001\leq x_1,y_1,x_2,y_2\leq 1000,你其次需要保证没人曾在 (x1,y1)(x_1,y_1) 落子,如果此时你获胜了判定结束且你获胜,否则你还需保证没人曾经在 (x2,y2)(x_2,y_2) 落子,如果此时你获胜了判定结束且你获胜,否则交互库将返回一组 x1,y1,x2,y2x_1,y_1,x_2,y_2 表示他在 (x1,y1),(x2,y2)(x_1,y_1),(x_2,y_2) 落子,保证 $(x_1,y_1)\neq (x_2,y_2),1\leq x_1,y_1,x_2,y_2\leq 1000$,如果此时交互库获胜判定结束且你输了,否则判定棋盘上是否已经有 400400 颗子,如果是你获得平局,否则进入你的新一轮。

输入格式

你每轮结束后从标准输入中输入四个整数,代表评测机返回的结果。

输出格式

每轮开始时,你需要向标准输出输出四个 [1,1000][1,1000] 中的整数,然后清空缓冲区

你可以使用如下语句来清空缓冲区:

  • 对于 C/C++:fflush(stdout)
  • 对于 C++:std::cout << std::flush
  • 对于 Java:System.out.flush()
  • 对于 Python:stdout.flush()
  • 对于 Pascal:flush(output)
  • 对于其他语言,请自行查阅对应语言的帮助文档。

特别的,对于 C++ 语言,在输出换行时如果你使用 std::endl 而不是 '\n',也可以自动刷新缓冲区。

提示

55 个测试点,在测试点中如果你获胜且每步都满足 6x,y9946\leq x,y\leq 994 你将获得 100100 分,否则获胜你将获得 5050 分,你输了将获得 00 分,平局获得 3030 分,总分数取测试点最小值。

本题输入输出参考 00 分程序:

#include <bits/stdc++.h>

using namespace std;

int n;
int x,y,xx,yy;


signed main()
{
    int i,j,k;
    n=100;
    while(n--)
    {
        cout<<rand()%1000+1<<' '<<rand()%1000+1<<endl;
        cout<<rand()%1000+1<<' '<<rand()%1000+1<<endl;
        cin>>x>>y>>xx>>yy;
    }
    return 0;
}