7595: Game

内存限制:128 MB 时间限制:6 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:
提交:0 通过:0

题目描述

There are n columns of blocks standing in a row. The i -th column has ai blocks in the beginning. Each block has size 1×1×1 . Define (x,y) represent the block at column x and is the y -th block from bottom to top. You need to support two operations:

- `1 x y` Push one block to the left, that means you choose one block which has no block at its right and make it move to the left. Because of the friction, the block above it will also move to the left, and because the blocks cannot intersect, the block at its left will move to the left either. This will cause a chain reaction. After every block moved, if some blocks hang in the air, then it will fall because of gravitation. Note that the blocks at column 1 can't move to the left, so if a movement causes a block at column 1 move, you can't perform this operation.

Formally, let bi be the number of blocks in the i -th column now. If y>bx , you will do nothing. Otherwise, you will choose block (x,y) . There are two stages of the movement of blocks. The first stage is moving. Let l be the greatest position that satisfies 1l<x and bl<y , then you can perform this operation as long as l exists. Then for all blocks (i,j) that satisfy l<ix and jy , it moves to (i1,j) . The second stage is falling. For blocks (i,j) (j>1 ) that there are no blocks in (i,j1) , it falls to (i,j1) . Repeat doing it until no blocks satisfy the condition(There is a block in (i,j) and no block in (i,j1) ).

Output the number of blocks you have moved in this operation. If y>bx or you can't perform this problem, the answer is 0 . It's not required that y>bx+1 in this problem.

This shows an operation that pushes the block at (6,4) , and the value of l is 3 . The number of blocks moved is 5 .

- `2 x` Ask the height of x -th column now.

You are also asked to output the height of all columns after all operations.

输入格式

The first line contains an integer T(1T5) - the number of test cases.

For each test case, the first line contains two integers n,q(1n,q2×105) . The second line contains n integers b1,b2,,bn(1bi109) . Each of the following q lines contains an operation: `1 x y` (1xn,1y109 ), or `2 x` (1xn) .

输出格式

For each test case, output one integer in one line for each operation. Then output n integers in one line - the height of all columns after all operations from left to right in order.

输入样例 复制

1
8 4
2 1 1 4 4 6 2 3
1 6 4
2 5
1 1 1
1 8 2

输出样例 复制

5
6
0
14
2 2 4 6 3 2 3 1