[luogu P3960] [noip2017 d2t3] 隊列
[luogu P3960] [noip2017 d2t3] 隊列
題目描述
Sylvia 是一個熱愛學習的女♂孩子。
前段時間,Sylvia 參加了學校的軍訓。眾所周知,軍訓的時候需要站方陣。
Sylvia 所在的方陣中有n \times mn×m名學生,方陣的行數為 nn,列數為 mm。
為了便於管理,教官在訓練開始時,按照從前到後,從左到右的順序給方陣中 的學生從 1 到 n \times mn×m 編上了號碼(參見後面的樣例)。即:初始時,第 ii 行第 jj 列 的學生的編號是(i-1)\times m + j(i−1)×m+j。
然而在練習方陣的時候,經常會有學生因為各種各樣的事情需要離隊。在一天 中,一共發生了 qq件這樣的離隊事件。每一次離隊事件可以用數對(x,y) (1 \le x \le n, 1 \le y \le m)(x,y)(1≤x≤n,1≤y≤m)描述,表示第 xx 行第 yy 列的學生離隊。
在有學生離隊後,隊伍中出現了一個空位。為了隊伍的整齊,教官會依次下達 這樣的兩條指令:
向左看齊。這時第一列保持不動,所有學生向左填補空缺。不難發現在這條 指令之後,空位在第 xx 行第 mm 列。
- 向前看齊。這時第一行保持不動,所有學生向前填補空缺。不難發現在這條 指令之後,空位在第 nn 行第 mm 列。
教官規定不能有兩個或更多學生同時離隊。即在前一個離隊的學生歸隊之後, 下一個學生才能離隊。因此在每一個離隊的學生要歸隊時,隊伍中有且僅有第 nn 行 第 mm 列一個空位,這時這個學生會自然地填補到這個位置。
因為站方陣真的很無聊,所以 Sylvia 想要計算每一次離隊事件中,離隊的同學 的編號是多少。
註意:每一個同學的編號不會隨著離隊事件的發生而改變,在發生離隊事件後 方陣中同學的編號可能是亂序的。
輸入輸出格式
輸入格式:
輸入共 q+1q+1 行。
第 1 行包含 3 個用空格分隔的正整數 n, m, qn,m,q,表示方陣大小是 nn 行 mm 列,一共發 生了 qq 次事件。
接下來 qq 行按照事件發生順序描述了 qq 件事件。每一行是兩個整數 x, yx,y,用一個空 格分隔,表示這個離隊事件中離隊的學生當時排在第 xx 行第 yy 列。
輸出格式:
按照事件輸入的順序,每一個事件輸出一行一個整數,表示這個離隊事件中離隊學 生的編號。
輸入輸出樣例
輸入樣例#1: 復制2 2 3 1 1 2 2 1 2
輸出樣例#1: 復制1 1 4
說明
【輸入輸出樣例 1 說明】
列隊的過程如上圖所示,每一行描述了一個事件。 在第一個事件中,編號為 1 的同學離隊,這時空位在第一行第一列。接著所有同學 向左標齊,這時編號為 2 的同學向左移動一步,空位移動到第一行第二列。然後所有同 學向上標齊,這時編號為 4 的同學向上一步,這時空位移動到第二行第二列。最後編號 為 1 的同學返回填補到空位中。
【數據規模與約定】
數據保證每一個事件滿足 1 \le x \le n,1 \le y \le m1≤x≤n,1≤y≤m
sol明天補。。
[luogu P3960] [noip2017 d2t3] 隊列