CF618A.Slime Combining

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Slime Combining

题目描述

你的朋友最近送给你一些史莱姆作为生日礼物。你一共有 nn 个史莱姆,所有史莱姆的初始价值都是 11

你准备用这些史莱姆玩一个游戏。最开始,你会把一个史莱姆单独放在一排。然后,你会依次把剩下的 n1n-1 个史莱姆一个一个地加入这排史莱姆中。每次加入时,你会把新史莱姆放在所有已经放置的史莱姆的右侧。接下来,只要最右侧的两个史莱姆值相同,设为 vv,你就把这两个史莱姆合成一个价值为 v+1v+1 的史莱姆。

你想知道在所有 nn 个史莱姆都放入后,这一排中最终剩下的史莱姆的价值分别是多少。请从左到右输出这些史莱姆的价值。

输入格式

输入的第一行包含一个整数 nn1n1000001 \leq n \leq 100000)。

输出格式

输出一行共 kk 个整数,kk 为最终这一排中剩下的史莱姆数量。第 ii 个数字表示从左到右排列的第 ii 个史莱姆的价值。

说明/提示

在第一个样例中,只有一个史莱姆,价值为 11。最终排内仅有一个价值为 11 的史莱姆。

在第二个样例中,操作流程如下:

最开始放置一个史莱姆,排为 1。

然后加入一个史莱姆,此时排为 1 1。由于最右两个史莱姆价值相同,我们把它们合并为一个价值为 22 的史莱姆。最终排内为 2。

在第三个样例中,放入前两个史莱姆后,排为 2。再加入一个史莱姆,排变为 2 1。

在最后一个样例中,步骤如下:

  1. 1
  2. 2
  3. 2 1
  4. 3
  5. 3 1
  6. 3 2
  7. 3 2 1
  8. 4

由 ChatGPT 5 翻译

样例

1
1
2
2
3
2 1
8
4

在线编程 IDE

建议全屏模式获得最佳体验