P8122 [BalticOI 2021] A Difficulty Choice (Day1)

题目背景

**本题为交互题。** 感谢交互库与 checker 的提供者 [Hi_chocolate](https://www.luogu.com.cn/user/193198) 为本题做出的巨大贡献。 ### 特别提示 **在洛谷提交本题时的一些注意事项(与原题面不同之处请以此处为准):** 1. 提交时请在程序里加入以下函数声明语句: ```cpp extern "C" long long skim (int i); extern "C" void answer (std::vector v); extern "C" void impossible (); ``` 你实现的 `solve` 函数应为: ```cpp extern "C" void solve (int N, int K, long long A, int S); ``` 2. 程序开头不用,也不应该包含 `books.h` 头文件。 3. 仅支持 `C++`(含 `C++`,`C++11`,`C++14`,`C++17`)提交。

题目描述

您致力于 AK BalticOI,而 AK BalticOI 的方式就是学习。您走进了一家书店,架子上有 $N$ 本书,编号为 $1$ 到 $N$,第 $i$ 本的难度为 $x_i$。您要从这 $N$ 本书中挑选出 $K$ 本书用来学习,您不希望学到太简单或太难的东西,所以您想要保证这 $K$ 本书的难度之和位于 $[A,2A]$ 的区间内。 可惜的是,您并不知道 $x_i$ 的具体数值,所以您要浏览这些书籍以得知他们的难度。书店老板有洁癖,他不希望您浏览太多的书籍,所以他规定您最多只能浏览 $S$ 本书,然后确定这些书的难度。幸运的是,您被告知这 $N$ 本书按照编号的增加,难度呈单调递增。 请编写一个程序,通过浏览书籍,购买您需要的书籍,或者指出无解。 ### 交互格式 本题为交互题,您需要编写 `void solve (int N, int K, long long A, int S)` 函数,$N,K,A,S$ 在上面已经定义,并且保证 $x_1

输入格式

见「交互格式」。

输出格式

见「交互格式」。

说明/提示

#### 样例 1 解释 $N=15$,$K=3$,$A=42$,$S=8$,下面是可能的两种会被判为通过的调用结果: 示例 1: |你的程序|返回值| |:-:|:-:| |`skim(1)`|$1337$| |`impossible`|-| 示例 2: |你的程序|返回值| |:-:|:-:| |`skim(1)`|$7$| |`skim(15)`|$21$| |`answer({11,15,7})`|-| #### 数据规模与约定 **本题采用捆绑测试。** - Subtask 1(5 pts):$S=N$,$170 \le N \le 1000$,$K=3$。 - Subtask 2(15 pts):$S=N$,$N \ge 170$。 - Subtask 3(10 pts):$S \ge 170$,$x_{i+1}-x_i \le \frac A K$。 - Subtask 4(15 pts):$S \ge 170$,$x_{i+1}-x_i \le A$。 - Subtask 5(15 pts):$S \ge 170$。 - Subtask 6(20 pts):$S \ge 40$,$x_{i+1}-x_i \le A$。 - Subtask 7(20 pts):$S \ge 40$。 对于 $100\%$ 的数据,$K \le N$,$3 \le N,S \le 10^5$,$1 \le A,x_i \le 10^{17}$,$3 \le K \le 10$。 #### 说明 翻译自 [BalticOI 2021 Day1 A A Difficulty Choice](https://boi.cses.fi/files/boi2021_day1.pdf)。