logo AlgoBeat OnlineJudge
登录 注册

#214684. [语言月赛 202511] 彩云曼波

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

这是一道交互题。


共有 个瓶子排成一列,每个瓶子有且只有一个 范围内的颜色,没有两个瓶子颜色相同。

你需要猜测瓶子的颜色顺序。你可以向交互库询问你的猜测是否正确。每次询问,你应当向标准输出输出一行 个整数,表示从左至右瓶子的颜色,然后输出一个换行并清空缓冲区

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

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

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

然后你需要从标准输入中输入一个整数,代表交互库返回的结果。为 则表示猜测错误,为 则表示猜测正确。

你最多询问 次。

输入格式

首先读入一个整数

之后,每次询问后读入一个 的整数。

当你读入 后,应当立即结束程序。

输出格式

每次询问,输出一行 个整数。

样例

样例输入 1

5

0

1

样例输出 1


1 2 3 5 4

1 2 3 4 5

数据范围与提示

对于 的测试数据,

示例程序:

#include<bits/stdc++.h>
using namespace std;

int main() {
  int n, result;
  cin >> n;
  // 向标准输出输出一行 n 个整数,表示从左至右瓶子的颜色
  for(int i = 1; i <= n; i++) {
    cout << i << ' ';
  }
  // 然后输出一个换行并清空缓冲区
  cout << endl; fflush(stdout);
  // 从标准输入中输入一个整数,代表交互库返回的结果
  cin >> result;
  // 当你读入 1 后,应当立即结束程序。
  if(result) return 0;
  for(int i = n; i >= 1; i--) {
    cout << i << ' ';
  }
  cout << endl; fflush(stdout);
  cin >> result;
  if(result) return 0;
  return 0;
}