CF2062C Cirno and Operations

题目描述

Cirno 有一个长度为 $n$ 的序列 $a$ 。她可以执行以下两种操作中的任意一种(可能零次),除非当前序列 $a$ 的长度为 $1$: - 反转序列。严格来说,序列 $[a_1, a_2, \ldots, a_n]$ 变为 $[a_n, a_{n-1}, \ldots, a_1]$。 - 将序列替换为其差分序列。严格来说,序列 $[a_1, a_2, \ldots, a_n]$ 变为 $[a_2 - a_1, a_3 - a_2, \ldots, a_n - a_{n-1}]$。 在所有操作之后,找到序列 $a$ 的元素和的最大值。

输入格式

输入的第一行包含一个整数 $t (1 \leq t \leq 100 )$ — 输入测试用例的数量。 每个测试用例的第一行包含一个整数 $ n ( 1 \leq n \leq 50 )$ — 序列 $ a $ 的长度。 每个测试用例的第二行包含 $ n $ 个整数 $ a_1, a_2, \ldots, a_n ( |a_i| \leq 1000 )$ — 序列 $ a $。

输出格式

对于每个测试用例,输出一个整数,表示序列的元素和的最大值。

说明/提示

在第一个测试用例中,Cirno 无法进行任何操作,因此答案是 $-1000$。 在第二个测试用例中,Cirno 首先反转序列,然后将其替换为差分序列:$[5, -3] \to [-3, 5] \to [8]$。可以证明这样能使总和最大化,因此答案是 $8$。 在第三个测试用例中,Cirno 可以选择不进行任何操作,因此答案是 $1001$。