A79548.merge

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

作为一个计算机科学家,小Y很喜欢研究零和一。

在一个仅包含 0 和 1 的序列中,小Y会通过对一些位置小Y掌握 nn 种魔法,这 nn 种魔法是有序的,每种魔法都有一个法力值 aia_i。他可以把法力值相同的两个魔法进行升级。小Y升级魔法按照如下的步骤进行:

  1. 找出能够升级(即出现大于等于2次)的魔法,并对法力值最小的魔法进行升级。

  2. 若法力值最小的魔法存在大于2个,找出最早出现(下标最小)的两个魔法进行升级。

  3. 升级时,将第一个魔法附加到第二个魔法上。第一个魔法会消失,第二个魔法的法力值会翻倍。

请你求出,小Y不断进行这样的升级直到没有魔法能够升级后,最终得到的每个魔法的法力值。

输入格式

输入共两行。

第一行,一个正整数,表示魔法数量 nn

第二行,nn 个正整数,第 ii 个正整数代表第 ii 个魔法的法力值 aia_i

输出格式

输出共两行。

第一行,输出最终的魔法数量;

第二行,按顺序输出每个魔法的法力值。

输入输出样例

  • 输入#1

    7
    3 4 1 2 2 1 1

    输出#1

    4
    3 8 2 1 
  • 输入#2

    5
    1 1 3 1 1

    输出#2

    2
    3 4 
  • 输入#3

    5
    10 40 20 50 30

    输出#3

    5
    10 40 20 50 30 

说明/提示

输入文件名: merge.in 输出文件名 merge.out

T3相关文件下载

数据范围和约定

对于 20%20\% 的数据,保证 ij,aiaj\forall i\neq j, a_i \neq a_j

对于 40%40\% 的数据,n5000n\leq 5000

对于 100%100\% 的数据,1n2×105,1ai1091\leq n \leq 2\times 10^5, 1\leq a_i\leq 10^9

首页