编程题
### 问题描述 有 $n$ 个人参加程序设计积分赛。其中第 $i$ 个人在比赛开始前的分数为 $a_i$。在这场比赛中,第 $i$ 个人取得的名次为 $p_i$,其中 $p_i$ 为一个 $1$ 到 $n$ 的排列。比赛结束后,每个人的分数会发生一定的变化。在比赛结束后,第 $i$ 个人的分数会变为 $\lfloor \frac{a_i \cdot x+b_{p_i} \cdot y}{x+y} \rfloor$,其中 $\lfloor k \rfloor$ 表示不大于 $k$ 的最大整数。其中数组 $b$ 为一个固定的长为 $n$ 的数组,而 $x$ 和 $y$ 是两个给定的正整数。 作为这场比赛的出题人,你无法改变参赛选手的初始分数 $a_i$,也无法改变比赛平台内置的数组 $b$ 和正整数 $x$,$y$。但你可以通过调控题目的难度和类型,进而对每个人在比赛中取得的名次进行控制。所以,你可以任选一个 $1$ 到 $n$ 的排列,作为这场比赛的排列 $p$。 作为一个好心的出题人,你希望在分数发生变化后,所有人的分数之和尽可能的更大。为了提前最好调整题目难度的规划,你需要求出分数变化后所有人的分数之和可能的最大值是多少。 ### 输入格式 输入第一行包含三个正整数 $n,x,y$,表示参加程序设计积分赛的人的总数和比赛平台内置的两个正整数 $x$ 和 $y$。 输入第二行包含 $n$ 个正整数 $a_1,a_2, \cdots a_n$,表示每个人在比赛开始前的分数。 输入第三行包含 $n$ 个正整数 $b_1,b_2, \cdots b_n$,表示在比赛平台内置的数组 $b$。 ### 输出格式 输出一个正整数,表示分数变化后所有人的分数之和可能的最大值。 ### 样例输入 ```text 3 1 2 3 2680 3 3000 3000 1 ``` ### 样例输出 ```text 4896 ``` ### 说明 一种可行的排列 $p$ 为 $(2,3,1)$。 $p_1 = 2$,第一个人在分数变化后的分数为 $\lfloor \frac{a_1 \cdot x+b_2 \cdot y}{x+y} \rfloor = \lfloor \frac{6003}{3} \rfloor = 2001$。 $p_2 = 3$,第二个人在分数变化后的分数为 $\lfloor \frac{a_2 \cdot x+b_3 \cdot y}{x+y} \rfloor = \lfloor \frac{2682}{3} \rfloor = 894$。 $p_3 = 1$,第三个人在分数变化后的分数为 $\lfloor \frac{a_3 \cdot x+b_1 \cdot y}{x+y} \rfloor = \lfloor \frac{6003}{3} \rfloor = 2001$。 三个人的分数总和为 $4896$。可以证明不存在使总和更大的排列 $p$。 ### 评测数据规模 对于 $20$% 的评测数据,$1\leq n \leq 100$。 对于 $40$% 的评测数据,$1\leq n \leq 1000$。 对于 $100$% 的评测数据,$1\leq n \leq 2 \cdot 10^5$,$1\leq x,y,a_i,b_i \leq 10^9$,保证数组 $b$ 单调不上升。
查看答案
赣ICP备20007335号-2