T405871 打表过样例

题目背景

众所周知,一名负责人的出题人,不应当让如下的打表程序获得过多的分数。 ```cpp #include int main() { std::cout 这个程序的功能是,输出一个特定的内容,以尝试通过一些测试点而获得分数。 > > 经典的例子是:,输出无解可以获得 45 分的成绩。

题目描述

很不幸,你遇到了不负责任的出题人。 在某道试题里,共有 $N$ 个测试点,组成了 $k$ 个 Subtask,第 $i$ 个 Subtask 包含 $p_i$ 个测试点,第 $j$ 个测试点的编号为 $w_{i,j}$。请注意,一个测试点可能属于多个 Subtask。 > **Subtask** > > 每个 Subtask 包含多个测试点和一个分值,当且仅当通过全部这些测试点时,才能获得这个 Subtask 的分值。一道题目的得分为通过的所有 Subtask 分值之和。 这是一道输出仅有一个数的题目,编号为 $i$ 的测试点,标准答案为 $A_i$。 很不幸,由于命题人不负责任,$A_i$ 中出现了大量重复,让打表选手有了可乘之机。 现在,你通过某种手段获得了全部的数据,请问输出哪个数,可以得到最高的分数?最高的分数是多少? 如果有多个数均可得到最高的分数,你只需要任意给出一个。

输入格式

输入共 $k+3$ 行。 输入的第一行为一个正整数 $k$。 接下来 $k$ 行: - 第 $i$ 行的第一个数为 $p_i$,代表第 $i$ 个 Subtask 包含的测试点数目。 - 接下来 $p_i$ 个数,第 $j$ 个代表测试点编号 $w_{i,j}$。 - 最后一个数为 $S_i$,代表这个 Subtask 的分值。 输入的第 $k+2$ 行为一个正整数 $N$。 输入的第 $k+3$ 行为 $N$ 个非负整数,第 $i$ 个代表 $A_i$。

输出格式

输出两行,每行一个整数。 第一行表示获得的最大分值。 第二行表示输出的数。 **如果有多个数可以取到相同的最大分值,任意输出一个即可。**

说明/提示

### 数据规模与约定 - 对于 $30\%$ 的测试数据,$1 \le N \le 100$,$1 \le k,p_i \le 10$,$1 \le A_i \le 100$。 - 对于 $100\%$ 的测试数据,$1 \le N \le 10^5$,$1 \le k,p_i \le 5000$,$1 \le w_{i,j} \le N$,$1 \le S_i \le 10^9$,$1 \leq A _ i \leq 10 ^ 9$。