#ABC351C. [ABC351C] Merge the balls

    ID: 2719 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: (None) Uploaded By: Tags>数据结构算法基础模拟ABC入门算法闯关STL与数据结构

[ABC351C] Merge the balls

题目背景

翻译自「Atcoder ABC351C」

题目描述

有一个空序列和 NN 个球。第 ii 个球 (1iN)(1≤i≤N) 的大小是 2Ai2^{A_i}。你将执行 NN 次操作:在第 ii 次操作中,你将第 ii 个球添加到序列的右端,然后重复以下步骤:

  1. 如果序列中只有一个或没有球,结束操作。

  2. 如果序列中最右边的球和倒数第二个球的大小不同,结束本轮操作。

  3. 如果序列中最右边的球和倒数第二个球的大小相同,移除这两个球并在序列右端添加一个新球,新球的大小等于被移除的两个球大小之和。然后,返回步骤 11 并重复此过程。

确定 NN 次操作后序列中剩余的球的数量。

输入格式

第一行输入一个正整数 NN

第二行输入 NN 个整数 A1,A2,,AnA_1,A_2,\cdots,A_n

输出格式

输出 NN 次操作后序列中剩余的球的数量。

样例

7
2 1 1 3 5 3 3
3
5
0 0 0 1 2
4

说明/提示

样例 1 解释

操作过程如下:

  • 第一次操作后,序列有一个大小为 222^2 的球。

  • 第二次操作后,序列有两个球,大小分别为 222^2212^1

  • 第三次操作后,序列有一个大小为 232^3 的球。这是通过以下步骤得到的:

    • 当第三个球被添加时,序列中的球大小为 22,21,212^2,2^1,2^1
    • 最右边的两个球大小相同,所以它们被移除,并添加一个大小为 21+21=222^1+2^1=2^2 的新球。现在序列中的球大小为 22,222^2,2^2
    • 再次,最右边的两个球大小相同,所以它们被移除,并添加一个大小为 22+22=232^2+2^2=2^3 的新球,留下一个大小为 232^3 的球。
  • 第四次操作后,序列有一个大小为 242^4 的球。

  • 第五次操作后,序列有两个球,大小分别为 242^4252^5

  • 第六次操作后,序列有三个球,大小分别为 24,25,232^4,2^5,2^3

  • 第七次操作后,序列有三个球,大小分别为 24,25,242^4,2^5,2^4

因此,你应该输出 33,这是序列中最终的球的数量。

样例 2 解释

  • 第一次操作后,序列有一个大小为 202^0 的球。

  • 第二次操作后,序列有一个大小为 212^1 的球。

  • 第三次操作后,序列有两个球,大小分别为 212^1202^0

  • 第四次操作后,序列有三个球,大小分别为 21,20,212^1,2^0,2^1

  • 第五次操作后,序列有四个球,大小分别为 21,20,21,222^1,2^0,2^1,2^2

因此,你应该输出 44,这是序列中最终的球的数量。

数据范围

1N2×105,0Ai1091\le N\le 2\times 10^5,0\le A_i \le 10^9,所有输入值都是整数。