#587. 数组推导

    ID: 587 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 2 上传者: 标签>CCF CSP认证第 23 次CCF CSP软件能力认证基础算法模拟

数组推导

问题描述

A1,A2,,AnA_1,A_2,\dots,A_n 是一个由 nn 个自然数(即非负整数)组成的数组。

在此基础上,我们用数组 B1,,BnB_1,\dots,B_n 表示 AA 的前缀最大值:

Bi=max{A1,A2,,Ai}.B_i = \max\{A_1,A_2,\dots,A_i\}.

如上所示,BiB_i 定义为数组 AA 中前 ii 个数的最大值。根据该定义易知 A1=B1A_1=B_1,且随着 ii 的增大,BiB_i 单调不降。

此外,我们用 sum=A1+A2++An\text{sum}=A_1+A_2+\dots+A_n 表示数组 AAnn 个数的总和。

现已知数组 BB,我们想要根据 BB 的值来反推数组 AA

显然,对于给定的 BBAA 的取值可能并不唯一。试计算,在数组 AA 所有可能的取值情况中,sum\text{sum} 的最大值和最小值分别是多少?

输入格式

第一行包含一个正整数 nn

第二行包含 nn 个用空格分隔的自然数 B1,B2,,BnB_1,B_2,\dots,B_n

输出格式

输出共两行。

  • 第一行输出一个整数,表示 sum\text{sum} 的最大值。
  • 第二行输出一个整数,表示 sum\text{sum} 的最小值。

输入样例 1

6
0 0 5 5 10 10

输出样例 1

30
15

输入样例 2

7
10 20 30 40 50 60 75

输出样例 2

285
285

说明

样例 1 解释

数组 AA 的可能取值包括但不限于以下三种情况:

  • 情况一:A=[0,0,5,5,10,10]A=[0,0,5,5,10,10]
  • 情况二:A=[0,0,5,3,10,4]A=[0,0,5,3,10,4]
  • 情况三:A=[0,0,5,0,10,0]A=[0,0,5,0,10,0]

其中第一种情况 sum=30\text{sum}=30 为最大值,第三种情况 sum=15\text{sum}=15 为最小值。

样例 2 解释

A=[10,20,30,40,50,60,75]A=[10,20,30,40,50,60,75] 是唯一可能的取值,所以 sum\text{sum} 的最大、最小值均为 285。

数据范围

  • 50%50\% 的测试数据满足数组 BB 单调 严格 增加,即 0<B1<B2<<Bn<1050 < B_1 < B_2 < \cdots < B_n < 10^5
  • 全部的测试数据满足 n100n \le 100 且数组 BB 单调不降,即 0B1B2Bn1050 \le B_1 \le B_2 \le \cdots \le B_n \le 10^5