AT_jag2016secretspring_d インビジブル

题目描述

你和朋友正准备玩一款名为「インビジブル(Invisible)」的卡牌游戏。在这款游戏中使用两种卡牌:“得分卡”和“妨碍卡”。每张得分卡上都标有一个正数值。该卡牌游戏的规则如下: - 游戏由玩家 1 和玩家 2 两位玩家进行,游戏从玩家 1 的回合开始。 - 场上有一个堆叠区和两副牌。堆叠区由两位玩家放置的卡片组成;每位玩家的牌库则由该玩家持有的所有得分卡和妨碍卡构成。玩家可以随时查看自己或对手牌库中卡片的顺序。游戏开始时,堆叠区中没有任何卡片。 - 两名玩家交替进行以下两种行动中的一种,每个回合恰好执行一次: - 将自己牌库顶端的卡片放到堆叠区的最上方。但当自己牌库中没有任何卡片时,无法执行此行动。 - 跳过自己的回合。 - 当某名玩家选择跳过回合时,进行以下处理: - 每位玩家获得堆叠区中所有满足下列两个条件的得分卡,获得的得分卡从场上移除: 1. 该得分卡是自己放到堆叠区里的。 2. 它在堆叠区中位于对手所放置的任何妨碍卡之上。(如果堆叠区中不存在对手放的妨碍卡,该玩家就获得自己放到堆叠区里的所有卡。) - 然后清空堆叠区中的所有卡。 如果在堆叠区中没有任何卡片且双方玩家连续跳过回合,则游戏结束。每位玩家的最终得分为其所获得的所有得分卡上所标数值之和。 每位玩家都会采取最优行动以最大化自己得分减去对手得分的差值;你的任务是:对于给定的两位玩家的牌库,在双方均按最优策略行事时,计算玩家 1 与玩家 2 得分之差。

输入格式

输入由单组数据构成,格式如下。 > $n \ \ m$ > $a _ 1 \ \ a _ 2 \ \ \cdots \ \ a _ n$ > $b _ 1 \ \ b _ 2 \ \ \cdots \ \ b _ n$ 第一行是两个正整数 $n, m$($1 \le n, m \le 50$),分别表示玩家 1 和玩家 2 牌库中的卡牌数。第二行包含 $n$ 个整数 $a _ 1, a _ 2, \cdots , a _ n$,$a _ i$ 表示玩家 1 牌库中从上到下第 $i$ 张卡的类型($1 \le i \le n$)。若 $a _ i$ 为 $1$ 至 $1{,}000{,}000$ 的正整数,则表示一张得分卡,其点数即该值;若 $a _ i$ 为 $−1$,则表示一张妨碍卡。第三行包含 $m$ 个整数 $b _ 1, b _ 2, \cdots, b _ m$,$b _ j$ 表示玩家 2 牌库中从上到下第 $j$ 张卡的类型($1 \le j \le m$)。若 $b _ j$ 为 $1$ 至 $1{,}000{,}000$ 的正整数,则表示一张得分卡,其点数即该值;若 $b _ j$ 为 $−1$,则表示一张妨碍卡。

输出格式

在双方玩家都采取最优行动时,输出玩家 1 的得分减玩家 2 的得分。

说明/提示

### 样例解释 \#1 ![](https://atcoder.jp/img/other/jag2016_domestic/fig/d-2.png)