A. 两端取币(twins2)

    传统题 文件IO:twins2 1000ms 256MiB

两端取币(twins2)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

两端取币(twins2)

题目描述

YY 同学有 nn 枚硬币,它们从左到右排成一行,第 ii 枚硬币的面值为 aia_i。

现在,YY 同学想从这些硬币中取出尽可能少的若干枚,使得被取出的硬币面值总和严格大于剩余所有硬币的面值总和。

但取硬币的方式受到限制:每次操作中,YY 同学只能取走当前最左端或当前最右端的一枚硬币。

你需要求出,在最优选择下,最少需要取走多少枚硬币,才能满足要求。

输入格式

第一行包含一个整数 nn,表示硬币的数量。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n,表示每枚硬币的面值。

输出格式

输出一个整数,表示最少需要取走的硬币数量。

样例

样例输入 #1

4
4 1 2 10

样例输出 #1

1

样例输入 #2

4
1 100 100 1

样例输出 #2

3

数据范围与约定

对于 100100% 的数据,保证 1≤n≤2×1051 \le n \le 2 \times 10^5,1≤ai≤1091 \le a_i \le 10^9。

测试点编号 分值 n≤n \le ai≤a_i \le 特殊性质
1∼41 \sim 4 2020 2020 无
5∼85 \sim 8 10310^3 10510^5 AA
9∼129 \sim 12 2×1052 \times 10^5 10910^9 BB
13∼1613 \sim 16 CC
17∼2017 \sim 20 无

特殊性质 AA:保证序列单调不降,即对所有 1≤i<n1 \le i < n,均有 ai≤ai+1a_i \le a_{i+1}。

特殊性质 BB:保证序列单调不增,即对所有 1≤i<n1 \le i < n,均有 ai≥ai+1a_i \ge a_{i+1}。

特殊性质 CC:保证所有硬币面值均相同。