题目描述:
对于一个序列 a,删除其中 0 个或多个元素而不改变剩余元素的顺序,得到的序列称为 a 的子序列。
例如,序列 a={1,2,3,4,5},其子序列可以为:
- {1,2,3}
- {1,3,5}
- {2,4}
- {1,2,4,5}
等。
给定一个包含 n 个整数的序列 a,请从中找出一个满足以下两个条件的子序列:
- 正负交错:
子序列中相邻元素的正负号相反。
- 例如若第一个元素为正数,则第二个必须为负数,第三个再为正数,以此类推;
- 若第一个元素为负数,第二个必须为正数,第三个再为负数……
- 长度尽可能长:
子序列的长度应为所有满足条件 1 的方案中最长的。
- 在长度相同的情况下,取出其中元素之和最大的那个子序列。
输入描述:
第一行:一个整数 n(1≤n≤2×105)
第二行:n 个整数 ai(−109≤ai≤109且 ai=0),整数之间用空格隔开。
输出描述:
输出一个整数,表示满足要求的子序列的元素之和。
5
2 -1 -3 15 10
16
满足条件1和2 的子序列有:
- {2,−1,15}
- {2,−1,10}
- {2,−3,15}
- {2,−3,10}
这些长度均为 3,取元素之和最大的:
- {2,−1,15}→和为 16,为最大。