#P10649. 「ROI 2017 Day 1」四轴飞行器编程

    ID: 10133 Type: RemoteJudge 1000ms 512MiB Tried: 0 Accepted: 0 Difficulty: 4 Uploaded By: Tags>2017交互题Special JudgeO2优化ROI

「ROI 2017 Day 1」四轴飞行器编程

题目背景

题面

系统中隐藏了一个只含 ()合法括号字符串 SS

你每次可以向系统询问一个 SS 的子区间 S[l,r]S[l,r],系统会返回这个子区间是否是一个合法括号字符串。

请编写一个程序,与系统进行交互,并最终输出 SS 的具体信息。

关于合法括号字符串的定义:

  • 空串是合法括号字符串。

  • A\text{A} 是合法括号字符串,那么 (A)\text{(A)} 也是合法括号字符串。

  • A\text{A}B\text{B} 是合法括号字符串,那么 AB\text{AB} 也是合法括号字符串。

交互过程

你可以编写一个函数 getProgram() 并在程序开始包含 grader.h 来完成交互过程。该函数无返回值,也没有参数。
请直接编写一个完整程序来完成交互。

你需要先从标准输出流中获得一个整数 nn,表示系统字符串的长度。

你可以向标准输出中输出询问和回答,形式如下:

  • 对于询问一段子串是否合法,你需要先输出一个字符 ?,后跟两个整数 l,rl,r,表示选择 S[l,r]S[l,r],字符,整数之间用一个空格隔开。如果 S[l,r]S[l,r] 为合法括号字符串,交互库会向标准输出中输出 Yes\texttt{Yes},否则会输出 No\texttt{No}

  • 对于回答整个程序,你需要先输出一个字符 !,后跟一个长度为 nn 的合法括号字符串。! 与序列之间用一个空格隔开。

在回答之后,你应该结束程序。保证四轴飞行器程序在交互过程中不会改变。

交互过程中,你的询问数不能超过一个值 kk

提示

【数据范围】

子任务编号 分值 2n2 \le n \le k=k=
11 2121 1616 150150
22 2828 100100 10410^4
33 2626 10310^3
44 2525 5×1045 \times 10^4 10510^5