#L3558. 「BalticOI 2021 Day1」A Difficult Choice
「BalticOI 2021 Day1」A Difficult Choice
题目描述
题目译自 BalticOI Day「A Difficult Choice」,译者 cnyz。
有一个长度为 的未知的单调上升整数序列 ,您需要选出这个序列中的 个数,使得他们的和 且 。
您最多可以得知 个 中的元素。
试选出这个序列满足要求的 个数。
实现细节
如果您是 C++ 选手,您需要声明 books.h。
您需要实现一个函数 void solve(int N,int K,long long A,int S),这个函数可以调用如下三个函数(如下均为样例交互库情况):
- long long skim(int i)
这个函数将返回 的值
这个函数至多能被调用 次,否则您的程序会被判为 Out of books to skim.
您需要保证 ,否则您的程序会被判为 Invalid skim.
- void answer(vector v)
如果有解,返回存储在 vector v 中的解
您需要保证 且 ,否则您的程序会被判为 Invalid answer
您需要保证 的和 且 ,否则您的程序会被判为 Wrong answer
如果您上述条件都满足了,您的程序会被判为 Correct: s book(s) skimmed.,其中 为 skim 函数的调用次数
- void impossible()
如果无解,返回无解
如果您调用了这个函数,您的程序会被判为 Impossible (not checked): s book(s) skimmed.,其中 为 skim 函数的调用次数,注意这并不意味您的程序是对的
评测用的交互库仅会返回 Not Correct 或者 Correct。
输入格式
样例交互库从标准输入流读入以下数据:
第一行,四个整数 ,,,。
第二行, 个整数 ,注意序列 单调上升。
如果输入不符格式,则直接判为 Invalid input.。
样例交互
有 ,,,。
首先我们调用 solve(15, 3, 42, 8)。
那么,样例交互可能会是这样的:

数据规模与约定
对于所有数据,满足 ,,,。