智乃与长短期主义者博弈
题号:NC288181
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

在博弈游戏中,往往存在长期主义者、短期主义者两种角色

短期主义者就像是一个贪婪无比的短视地精,他只会选择当前步骤中所有局部选择的最优解

长期主义者就好比一个经验丰富的千层饼,他总会选择在每个步骤中选择能达到全局最优的决策,哪怕对于当前阶段可能是亏损的

显然,长期主义者是否明知对方的行动模式,对于他构建自己的全局最优决策存在非常大的影响

在本题中,长期主义者将被明确告知短期主义者的行动模式,他将以此作为已知条件构建他的最优决策

现在有这样一个游戏,有n个整数排成一排,两个人轮流取数,每次只能从两端的数字中选择一个取走

例如一开始有3个数字为1,3,2则一开始只能拿1或者2,只有当1或者2被取走后才能拿到中间的3

短期主义者总是选择两端中较大的数字,并且如果两数相同,则选择最左端的数字,而长期主义者(已知对方的行动模式)总是选择对于全局最优的决策

两人均以最大化自己的得分为目标,假设短期主义者先手,则最终二者博弈的得分各自是多少?

输入描述:

第一行输入一个正整数n(1 \leq n \leq 1000)表示整数的个数

接下来另起一行,输入n个正整数a_{i}(1 \leq a_{i} \leq 10^6)表示这一排整数的内容

输出描述:

在一行内输出两个整数,分别表示短期主义者、长期主义者的得分,整数之间用一个空格隔开
示例1

输入

复制
6
1 100 1 100 1 100

输出

复制
300 3
示例2

输入

复制
7
4 5 7 6 2 3 1

输出

复制
14 14