1. 程式人生 > >LOJ2319「NOIP2017」列隊

LOJ2319「NOIP2017」列隊

原題連結:https://loj.ac/problem/2319

列隊

題目描述

Sylvia 是一個熱愛學習的女孩子。

前段時間, Sylvia 參加了學校的軍訓。眾所周知,軍訓的時候需要站方陣。 Sylvia所在的方陣中有 n × m n \times m 名學生,方陣的行數為 n

n ,列數為 m m

為了便於管理,教官在訓練開始時,按照從前到後,從左到右的順序給方陣中的學生從 1 1 n

× m n \times m 編上了號碼(參見後面的樣例)。即:初始時,第 i i 行第 j
j
列的學生的編號是 ( i 1 ) × m + j (i − 1) \times m + j

然而在練習方陣的時候,經常會有學生因為各種各樣的事情需要離隊。在一天中,一共發生了 q q 件這樣的離隊事件。每一次離隊事件可以用數對 ( x , y ) ( 1 x n , 1 y m ) (x, y) (1\le x\le n, 1\le y\le m) 描述, 表示第 x x 行第 y y 列的學生離隊。

在有學生離隊後,隊伍中出現了一個空位。為了隊伍的整齊,教官會依次下達這樣的兩條指令:

向左看齊。這時第一列保持不動,所有學生向左填補空缺。不難發現在這條指令之後,空位在第 x x 行第 m m 列。

向前看齊。這時第一行保持不動,所有學生向前填補空缺。不難發現在這條指令之後,空位在第 n n 行第 m m 列。

教官規定不能有兩個或更多學生同時離隊。即在前一個離隊的學生歸隊之後,下一個學生才能離隊。因此在每一個離隊的學生要歸隊時,隊伍中有且僅有第 n n 行第 m m 列一個空位,這時這個學生會自然地填補到這個位置。

因為站方陣真的很無聊,所以 Sylvia 想要計算每一次離隊事件中,離隊的同學的編號是多少。

注意:每一個同學的編號不會隨著離隊事件的發生而改變,在發生離隊事件後方陣中同學的編號可能是亂序的。

輸入格式

輸入共 q + 1 q+1 行。

1 1 行包含 3 3 個用空格分隔的正整數 n , m , q n, m, q ,表示方陣大小是 n n m m 列,一共發生了 q q 次事件。

接下來 q q 行按照事件發生順序描述了 q q 件事件。每一行是兩個整數 x , y x, y , 用一個空格分隔, 表示這個離隊事件中離隊的學生當時排在第 x x 行第 y y 列。

輸出格式

按照事件輸入的順序,每一個事件輸出一行一個整數,表示這個離隊事件中離隊學生的編號。

樣例
樣例輸入

2 2 3
1 1
2 2
1 2

樣例輸出

1
1
4

樣例解釋

1.png

列隊的過程如上圖所示,每一行描述了一個事件。

在第一個事件中,編號為 1 1 的同學離隊,這時空位在第一行第一列。接著所有同學向左標齊,這時編號為 2 2 的同學向左移動一步,空位移動到第一行第二列。然後所有同學向上標齊,這時編號為 4 4 的同學向上一步,這時空位移動到第二行第二列。最後編號為 1 1 的同學返回填補到空位中。

資料範圍與提示
測試點編號 n n m m q q 其他約定
1 , 2 , 3 , 4 , 5 , 6 1,2,3,4,5,6 1000 \le 1000 1000 \le 1000 500 \le 500
7 , 8 , 9 , 10 7,8,9,10 5 × 1 0 4 \le 5 \times 10^{4} 5 × 1 0 4 \le 5 \times 10^{4} 500 \le 500
11 , 12 11,12 = 1 =1 1 0 5 \le 10^{5} 1 0 5 \le 10^5 所有事件 x = 1 x=1
13 , 14 13,14 = 1 =1 3 × 1 0 5 \le 3\times 10^{5} 3 × 1 0 5 \le 3\times 10^5 所有事件 x = 1 x=1
15 , 16 15,16 3 × 1 0 5 \le 3\times 10^5 3 × 1 0 5 \le 3\times 10^{5} 3 × 1 0 5 \le 3\times 10^5 所有事件 x = 1 x=1
17 , 18 17,18 1 0 5 \le 10^5 1 0 5 \le 10^{5} 1 0 5 \le 10^5
17 , 18 17,18 3 × 1 0 5 \le 3\times 10^5 3 × 1 0 5 \le 3\times 10^{5} 3 × 1 0 5 \le 3\times 10^5