日野南高校入學典禮,由學生會長虎視虎子向新生致詞
為了入學典禮的能流暢地進行,充分的事前準備也是不能少的,其中一個重點準備項目便是新生們的入場。
會場的座位一共有 $N$ 個橫行及 $M$ 個直列,形成一個 $N \times M$ 的二維表格,每個座位恰有一位學生。為了確保入場時人流順暢,校方將學生以 $1$ 到 $N \times M$ 的整數編號,事先安排好每位學生的座位,並讓學生們分批進入會場。所有學生被分成 $K$ 個梯次,第 $i$ 個梯次將由編號最小的還沒進場的前 $s_i$ 名學生進入會場。進入會場後學生便會前往自己的座位,待所有學生皆就座後,再開放下一個梯次的學生進入會場,直到 $K$ 個梯次結束,$N \times M$ 位學生皆入場為止。
不過只有井然有序的入場順序還不夠,座位編號的規畫也是相當重要的。為了確保新入場的學生不要被已經入座的學生阻擋到去路,在每一個梯次的學生全部入座後,所有已經入場的學生的座位分布都會滿足以下的條件:所有已就座的學生四方位連通,且此連通塊為滿足「曼哈頓凸」的性質。
所謂「曼哈頓凸」的性質直觀地形容便是連通塊中沒有凹槽或空洞。嚴謹的說,一個二維表格上的連通塊滿足「曼哈頓凸」的性質若且唯若連通塊中的任兩個點它們在連通塊中的最短距離即為兩個點之間的曼哈頓距離。
看到新生入學的虎視虎子感到很懷念,便回憶起當年她新入學時入學典禮的座位表。雖然鹿乃子乃子是轉學生,不過她很好奇當年虎視虎子的入學典禮的樣貌。雖然正確的數字已不可考,但鹿乃子乃子想請你寫一支程式幫她算一算,根據上述的座位安排方式,學生最多是被分成幾個梯次進場的。
另外,由於兩年前的記憶已經模糊,虎視虎子可能會突然回想起一些細節,並交換座位表上其中兩個位置的編號。每次回想後的修改是會累積的,也就是說每次交換完兩個編號後,在下一次回想前並不會將兩個編號換回去。
輸入的第一行包含兩個整數 $N, M$。接下來 $N$ 行,第 $i$ 行包含 $M$ 個整數 $a_{i,j}$,表示第 $i$ 行第 $j$ 列的座位的學生編號。下一行為一整數 $Q$,表示虎視虎子回想起的細節。接下來 $Q$ 行,每行包含四個整數 $r_1, c_1, r_2, c_2$,表示交換座位表第 $r_1$ 行第 $c_1$ 列與第 $r_2$ 行第 $c_2$ 列的編號。
第一行請輸出一個整數,表示透過原本的座位表推論出的最多可能被分成的梯次。接下來 $Q$ 行,第 $i$ 行請輸出一個整數,表示經過前 $i$ 次回想後修改的座位表推論出的最多可能被分成的梯次。
第一筆範例測資,一開始的座位表最多可以被分為 $K=6$ 梯次,每個梯次進場的學生數量依序為 $s_i = [1, 1, 1, 1, 1, 4]$。接下來每次回想後修改的結果如下:
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~1 | 範例測資。 | 0 |
2 | 0~23 | $N\times M \leq 100, Q\leq 100$。 | 1 |
3 | 24~41 | $N=1$。 | 9 |
4 | 42~79 | $Q=0$。 | 30 |
5 | 0~116 | 無特別限制。 | 60 |