Zbieranie klocków

시간 제한15초메모리 제한2048 MB

요약
격자 위 블록을 더하거나 빼는 q번의 연산 뒤마다, 현재 배치에서 Algosia가 하나씩 떼어낼 수 있는 블록 수의 최댓값을 출력한다.
난이도

어려움10점 중 9점

유형
그래프, 세그먼트 트리, DFS
정답자
아직 제출이 없습니다

문제

Mała Algosia ma prostokątną planszę o wymiarach n×mn \times m, podzieloną na n⋅mn \cdot m kwadratowych pól. Algosia lubi bawić się, układając na planszy sześcienne klocki. Wymiary klocków są takie same jak rozmiary pól, więc Algosia zawsze kładzie klocki tak, aby zajmowały dokładnie jedno pole.

Po zakończonej zabawie Algosia zawsze grzecznie sprząta klocki. Ma małe ręce, więc w jednym ruchu jest w stanie przenieść tylko jeden klocek z planszy do pudełka. Aby mogła chwycić klocek, musi być w stanie złapać go palcami za dwie przeciwległe ściany i te ściany nie mogą być przykryte sąsiadującymi klockami. Innymi słowy, taki klocek albo musi nie mieć sąsiadów po lewej i po prawej, albo musi nie mieć sąsiadów od góry i od dołu.

Algosia zaczęła dzisiejszą zabawę z planszą, na której było ustawionych kk klocków. Następnie, z pomocą rodziców, qq razy dostawiła lub zdjęła pojedynczy klocek z planszy (dzięki pomocy rodziców możliwe było zdjęcie klocka, nawet jeśli miał on zastawione ściany sąsiadującymi klockami).

Dziewczynka zastanawia się dla każdej z konfiguracji klocków na planszy (czyli na początku zabawy oraz po każdym z qq ruchów), ile maksymalnie klocków mogłaby, jeden po drugim, samodzielnie zdjąć z planszy. Algosia rozpatruje to tylko hipotetycznie – nie zdejmuje faktycznie tych klocków. Napisz program, który wyznaczy te liczby dla każdej z konfiguracji.

입력

W pierwszym wierszu znajdują się cztery liczby całkowite nn, mm, kk, qq (1≤n,m≤200,0001 ≤ n, m ≤ 200\\, 000, 1≤k,q≤75,0001 ≤ k, q ≤ 75\\, 000), oznaczające odpowiednio wysokość i szerokość planszy, liczbę klocków ustawionych na planszy na początku zabawy oraz liczbę wykonanych ruchów.

W kolejnych kk wierszach znajdują się po dwie liczby całkowite x_ix\_i, y_iy\_i (1≤x_i≤n1 ≤ x\_i ≤ n, 1≤y_i≤m1 ≤ y\_i ≤ m), oznaczające współrzędne pola na którym stoi ii-ty klocek na początku zabawy. Na żadnym polu nie stoi więcej niż jeden klocek.

W kolejnych qq wierszach znajdują się po dwie liczby całkowite x_jx\_j, y_jy\_j (1≤x_j≤n1 ≤ x\_j ≤ n, 1≤y_j≤m1 ≤ y\_j ≤ m), oznaczające współrzędne pola, na którym został wykonany jj-ty ruch. Jeśli na tym polu nie było klocka, to ruch polegał na dostawieniu tam klocka. Natomiast jeśli na tym polu stał już klocek, to ruch polegał na zdjęciu go.

출력

Na wyjście należy wypisać q+1q + 1 wierszy zawierających po jednej liczbie całkowitej. Liczba w ii-tym wierszu powinna być równa liczbie klocków, które Algosia może samodzielnie, jeden po drugim, zebrać z planszy, jeśli rozważamy konfigurację klocków po wykonaniu pierwszych i−1i - 1 ruchów.

힌트

Rysunek 1: Tak wygląda plansza na początku zabawy. Jest na niej k=22k = 22 klocków. Algosia może od razu zdjąć z planszy 1414 z nich.

Rysunek 2: Tak wygląda plansza po zdjęciu tych 1414 klocków. Wszystkie pozostałe klocki Algosia też może bez problemu zdjąć. Zatem w pierwszej konfiguracji Algosia jest w stanie sprzątnąć wszystkie 2222 klocki.

Rysunek 3: W pierwszym ruchu Algosia dostawia klocek zaznaczony na czerwono, tworząc kwadrat 3×33 \times 3, którego nie będzie w stanie w żaden sposób zdjąć. Pozostałe klocki (jest ich 1414) są możliwe do sprzątnięcia.

Rysunek 4: Tak wygląda plansza po drugim ruchu. Algosia może zdjąć jedynie 66 klocków.

Rysunek 5: Tak wygląda plansza po trzecim ruchu. Odpowiedź to 55.

예제1

  1. 예제 1

    입력
    5 7 22 3
    1 1
    1 2
    1 3
    2 3
    3 3
    3 2
    2 1
    3 1
    4 1
    5 1
    1 5
    1 6
    1 7
    2 5
    2 7
    3 5
    3 6
    3 7
    4 5
    5 5
    4 7
    5 7
    2 2
    2 6
    5 1
    
    예상 출력
    22
    14
    6
    5