#ATarc154d. [ARC154D] A + B > C ?

[ARC154D] A + B > C ?

题目描述

PCT 君有一个 (1,2,,N)(1,2,\dots,N) 的排列 (P1,P2,,PN)(P_1,P_2,\dots,P_N)。你只知道 NN 的值。

你可以向 PCT 君最多询问 2500025000 次以下的问题:

  • 指定满足 1i,j,kN1\le i,j,k\le N 的整数三元组 (i,j,k)(i,j,k),询问 Pi+Pj>PkP_i+P_j>P_k 是否成立。

请你求出 P1,P2,,PNP_1,P_2,\dots,P_N 的全部值。

输入格式

本题为交互题(你的程序需要与评测程序通过输入输出进行交互)。

首先,你的程序会从标准输入读入排列的长度 NN

NN

之后,你可以进行提问。每次提问需要按如下格式输出到标准输出(末尾需换行):

? ii jj kk

如果提问合法,将会从标准输入读入该问题的答案 ansans

ansans

其中,ansansYesNo

如果你的提问格式有误,或者提问次数超过规定次数,标准输入会返回 -1

-1

此时,评测程序已判定你的提交为不正确,并会立即结束交互。你的程序也应当立即退出。

当你确定 P1,P2,,PNP_1,P_2,\dots,P_N 的全部值后,请按如下格式输出答案(末尾需换行):

! P1P_1 P2P_2 \dots PNP_N

输出格式

无。

说明/提示

限制

  • 1N20001\le N\le 2000
  • PP 在程序与评测程序开始交互前已确定。

评测说明

  • 每次输出后请务必刷新输出缓冲区,否则可能会因 TLE 被判为不正确。
  • 输出答案(或收到 -1)后请立即正常退出程序,否则评测结果不确定。
  • 多余的换行会被视为输出格式错误。

输入输出样例

以下为 N=4,P=(3,1,2,4)N=4,P=(3,1,2,4) 时的交互示例。

输入 输出 说明
4 NN 被给出。
? 1 2 3 第 1 次提问,询问 P1+P2>P3P_1+P_2>P_3 是否成立。
Yes P1+P2=4,P3=2P_1+P_2=4,P_3=2,因此返回 Yes
? 2 3 3 第 2 次提问,询问 P2+P3>P3P_2+P_3>P_3 是否成立。
Yes P2+P3=3,P3=2P_2+P_3=3,P_3=2,因此返回 Yes
? 2 3 4 第 3 次提问,询问 P2+P3>P4P_2+P_3>P_4 是否成立。
No P2+P3=3,P4=4P_2+P_3=3,P_4=4,因此返回 No
! 3 1 2 4 输出 P1,P2,P3,P4P_1,P_2,P_3,P_4。实际排列为 (3,1,2,4)(3,1,2,4),因此 AC。

由 ChatGPT 4.1 翻译