提示: 欢迎访问OurACM平台。
Problem 2260 Card Game

Accept: 44    Submit: 188
Time Limit: 3000 mSec    Memory Limit : 32768 KB

Problem Description

有如下取牌游戏:

1. 桌面上有n张卡牌从左到右排成一行,每张卡牌上有一个数字;

2. 游戏按轮次进行,每一轮中取掉所有比左边数值小的卡牌;

3. 当无牌可取的时候则游戏结束。

比如初始卡牌为{5, 6, 3, 7, 4, 1, 2},共需2轮取牌。取牌过程如下(小括号为每轮取掉的牌):

{5, 6, 3, 7, 4, 1, 2}

==> {5, 6, (3), 7, (4), (1), 2}

==> {5, 6, 7, 2}

==> {5, 6, 7, (2)}

==> {5, 6, 7}

现按顺序给定初始的卡牌数字,请求出游戏结束时取牌的总轮次,并输出结束时桌上剩余的卡牌序列。

Input

包含多组测试数据。

输入包含两行。

第一行包含一个整数n表示卡牌的数量。

第二行包含n个空格隔开的整数,表示排成一行的卡牌上对应的数字(取值范围[1,1000000000])。

n≤1000000

Output

输出包含两行。

第一行包含一个整数表示游戏的取牌总轮次。

第二行包含游戏结束时桌上剩余的卡牌序列,用空格隔开。

Sample Input

7 5 6 3 7 4 1 2

Sample Output

2 5 6 7

Source

福州大学第十四届程序设计竞赛_重现赛

Submit  Back  Status  Discuss