CF1198B Welfare State
题目描述
有一个国家有 $n$ 个公民,第 $i$ 个公民初始拥有 $a_i$ 元钱。政府严格控制公民的财富。每当某个公民消费或赚取金钱时,必须向社会服务部门提交一份收据,注明其当前拥有的金额。
有时政府会向贫困公民发放补助:所有拥有的钱严格少于 $x$ 的公民都会获得补助,使得他们的余额恰好变为 $x$。在这种情况下,公民无需提交收据。
你已知每个公民的初始财富以及所有事件(收据和补助)的日志。请还原所有事件后每个公民的余额。
输入格式
第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^{5}$),表示公民人数。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i \le 10^9$),表示每个公民的初始余额。
第三行包含一个整数 $q$($1 \le q \le 2 \cdot 10^{5}$),表示事件的数量。
接下来的 $q$ 行,每行描述一个事件,按时间顺序给出。
每个事件要么是 $1\ p\ x$($1 \le p \le n$,$0 \le x \le 10^9$),表示第 $p$ 个公民提交收据,其余额变为 $x$;要么是 $2\ x$($0 \le x \le 10^9$),表示一次参数为 $x$ 的补助。
输出格式
输出 $n$ 个整数,表示所有事件结束后每个公民的余额。
说明/提示
在第一个样例中,余额变化如下:$1\ 2\ 3\ 4 \rightarrow 3\ 3\ 3\ 4 \rightarrow 3\ 2\ 3\ 4 \rightarrow 3\ 2\ 3\ 4$。
在第二个样例中,余额变化如下:$3\ 50\ 2\ 1\ 10 \rightarrow 3\ 0\ 2\ 1\ 10 \rightarrow 8\ 8\ 8\ 8\ 10 \rightarrow 8\ 8\ 20\ 8\ 10$。
由 ChatGPT 4.1 翻译