题目描述
给定 n 个整数 a1,a2,…,an(0≤ai≤n),以及 n 个整数 w1,w2,…,wn。称 a1,a2,…,an 的一个排列 ap[1],ap[2],…,ap[n] 为 a1,a2,…,an 的一个合法排列,当且仅当该排列满足:对于任意的 k 和任意的 j,如果 j≤k,那么 ap[j] 不等于 p[k]。(换句话说就是:对于任意的 k 和任意的 j,如果 p[k] 等于 ap[j],那么 k<j。)
定义这个合法排列的权值为 wp[1]+2wp[2]+…+nwp[n]。你需要求出在所有合法排列中的最大权值。如果不存在合法排列,输出 −1。
样例解释中给出了合法排列和非法排列的实例。
输入格式
第一行一个整数 n。
接下来一行 n 个整数,表示 a1,a2,…,an。
接下来一行 n 个整数,表示 w1,w2,…,wn。
输出格式
输出一个整数表示答案。
3
0 1 1
5 7 3
32
3
2 3 1
1 2 3
-1
10
6 6 10 1 7 0 0 1 7 7
16 3 10 20 5 14 17 17 16 13
809
数据范围与提示
对于前 20% 的数据,1≤n≤10;
对于前 40% 的数据,1≤n≤15;
对于前 60% 的数据,1≤n≤1000;
对于前 80% 的数据,1≤n≤100000;
对于 100% 的数据,1≤n≤500000,0≤ai≤n(1≤i≤n),1≤wi≤109 ,所有 wi 的和不超过 1.5×1013。