Coding is the closest thing we have to superpower !
描述
有n个整数排成一排,有一些数字被固定在某些位置,另外的一些可以自由交换。超能侠想要使所有相邻两数乘积的和最大,请你帮帮他。
输入
第一行输入一个整数 (1 \le n \le 16)。
接下来n行,每行给出两个整数a_i(−10^4 \le a_i \le 10^4)、p_i(-1 \le p_i \lt n),以空格分割。
a_i表示数字的值,p_i为该数字指定的位置,如果p_i = −1,代表该数字的位置不被限制。输入保证不会为两个数字指定相同的位置。
输出
数字重新排列后最大的所有相邻两数乘积的和,即\max \{a_1*a_2+a_2*a_3+......+a_{n−1} * a_n \}。
样例
输入
6 -1 0 2 1 -3 2 4 3 -5 4 6 5
输出
-70
输入
5 40 -1 50 -1 30 -1 20 -1 10 -1
输出
4600
标签