CF1373G Pawns

题目描述

给你一个由 $n$ 行 $n$ 列组成的国际象棋棋盘。行从下到上编号为 $1$ 到 $n$,列从左到右编号为 $1$ 到 $n$。第 $x$ 列第 $y$ 行的格子记作 $(x, y)$。此外,第 $k$ 列是特殊列。 初始时棋盘为空。接下来有 $m$ 次操作,每次操作会在棋盘上添加或移除一个兵。如果当前格子 $(x, y)$ 没有兵,则在该格子添加一个兵;否则移除该格子的兵。 当前棋盘是“好”的,当且仅当可以通过如下规则将所有兵移动到特殊列: - 位于 $(x, y)$ 的兵可以移动到 $(x, y+1)$、$(x-1, y+1)$ 或 $(x+1, y+1)$; - 可以进行任意多次这样的移动; - 兵不能移出棋盘之外; - 每个格子最多只能有一个兵。 当前棋盘不一定总是“好”的。为了解决这个问题,你可以在棋盘顶部添加新的行,即新行的编号为 $n+1, n+2, n+3, \dots$。 在每次 $m$ 次操作后,输出一个整数——为了使棋盘变为“好”的,最少需要添加的行数。

输入格式

第一行包含三个整数 $n$、$k$ 和 $m$($1 \le n, m \le 2 \cdot 10^5; 1 \le k \le n$),分别表示棋盘的大小、特殊列的编号和操作次数。 接下来 $m$ 行,每行包含两个整数 $x$ 和 $y$($1 \le x, y \le n$),表示操作的格子。如果该格子没有兵,则在该格子添加一个兵;否则移除该格子的兵。

输出格式

每次操作后输出一个整数,表示为了使棋盘变为“好”的,最少需要添加的行数。

说明/提示

由 ChatGPT 4.1 翻译