codeforces#P1922D. Berserk Monsters
Berserk Monsters
Description
Monocarp is playing a computer game (yet again). Guess what is he doing? That's right, killing monsters.
There are $n$ monsters in a row, numbered from $1$ to $n$. The $i$-th monster has two parameters: attack value equal to $a_i$ and defense value equal to $d_i$. In order to kill these monsters, Monocarp put a berserk spell on them, so they're attacking each other instead of Monocarp's character.
The fight consists of $n$ rounds. Every round, the following happens:
- first, every alive monster $i$ deals $a_i$ damage to the closest alive monster to the left (if it exists) and the closest alive monster to the right (if it exists);
- then, every alive monster $j$ which received more than $d_j$ damage during this round dies. I. e. the $j$-th monster dies if and only if its defense value $d_j$ is strictly less than the total damage it received this round.
For each round, calculate the number of monsters that will die during that round.
The first line contains one integer $t$ ($1 \le t \le 10^4$) — the number of test cases.
Each test case consists of three lines:
- the first line contains one integer $n$ ($1 \le n \le 3 \cdot 10^5$);
- the second line contains $n$ integers $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^9$);
- the third line contains $n$ integers $d_1, d_2, \dots, d_n$ ($1 \le d_i \le 10^9$).
Additional constraint on the input: the sum of $n$ over all test cases does not exceed $3 \cdot 10^5$.
For each test case, print $n$ integers. The $i$-th integer should be equal to the number of monsters that die during the $i$-th round.
Input
The first line contains one integer $t$ ($1 \le t \le 10^4$) — the number of test cases.
Each test case consists of three lines:
- the first line contains one integer $n$ ($1 \le n \le 3 \cdot 10^5$);
- the second line contains $n$ integers $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^9$);
- the third line contains $n$ integers $d_1, d_2, \dots, d_n$ ($1 \le d_i \le 10^9$).
Additional constraint on the input: the sum of $n$ over all test cases does not exceed $3 \cdot 10^5$.
Output
For each test case, print $n$ integers. The $i$-th integer should be equal to the number of monsters that die during the $i$-th round.
3
5
3 4 7 5 10
4 9 1 18 1
2
2 1
1 3
4
1 1 2 4
3 3 4 2
3 1 0 0 0
0 0
1 1 1 0
Note
Explanation for the first test case of the example:
During the first round, the following happens:
- the monster $1$ deals $3$ damage to the monster $2$;
- the monster $2$ deals $4$ damage to the monster $1$ and the monster $3$;
- the monster $3$ deals $7$ damage to the monster $2$ and the monster $4$;
- the monster $4$ deals $5$ damage to the monster $3$ and the monster $5$;
- the monster $5$ deals $10$ damage to the monster $4$;
- the monster $1$ does not die, since it received $4$ damage and its defense is $4$;
- the monster $2$ dies, since it received $10$ damage and its defense is $9$;
- the monster $3$ dies, since it received $9$ damage and its defense is $1$;
- the monster $4$ does not die, since it received $17$ damage and its defense is $18$;
- the monster $5$ dies, since it received $5$ damage and its defense is $1$.
After the first round, the monsters $1$ and $4$ stay alive.
During the second round, the following happens:
- the monster $1$ deals $3$ damage to the monster $4$;
- the monster $4$ deals $5$ damage to the monster $1$;
- the monster $1$ dies, since it received $5$ damage and its defense is $4$;
- the monster $4$ does not die, since it received $3$ damage and its defense is $18$.
During the next three rounds, only the $4$-th monster is alive, so nothing happens.