题库练习 排列
← 上一题 下一题 →

A2717 | 排列

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

给定 $n$ 个整数 $a_1, a_2, \dots, a_n, 0 \le a_i \le n$,以及 $n$ 个整数 $w_1, w_2, \dots, w_n$。称 $a_1, a_2, \dots, a_n$的 一个排列 $a_{p[1]}, a_{p[2]}, \dots, a_{p[n]}$为 $a_1, a_2, \dots, a_n$的一个合法排列,当且仅当该排列满足:对于任意 的 $k$ 和任意的 $j$,如果 $j \le k$,那么 $a_{p[j]}$不等于 $p[k]$。(换句话说就是:对于任意的 $k$ 和任意的 $j$,如果 $p[k]$等于 $a_{p[j]}$,那么 $k<j$。)定义这个合法排列的权值为 $w_{p[1]} + 2w_{p[2]} + \dots + nw_{p[n]}$。

你 需要求出在所有合法排列中的最大权值。如果不存在合法排列,输出 $-1$ 。

样例解释中给出了合法排列和非法排列的实例。

输入格式

第一行一个整数 $n$。

接下来一行 $n$ 个整数,表示$a_1, a_2, \dots, a_n$ 。 接下来一行 $n$ 个整数,表示 $w_1, w_2, \dots, w_n$ 。

输出格式

输出一个整数表示答案。

输入输出样例

输入 #1
3 
0 1 1 
5 7 3 
输出 #1
32
输入 #2
3 
2 3 1 
1 2 3 
输出 #2
-1
输入 #3
10 
6 6 10 1 7 0 0 1 7 7 
16 3 10 20 5 14 17 17 16 13 
输出 #3
809
C++ 编辑器
输入
输出