import sys
def czy_mozna_zdjac(x, y, plansza, n, m):
"""Sprawdza, czy klocek na (x, y) można zdjąć."""
if (x, y) not in plansza:
return False # Nie ma klocka na tym polu
lewo = (x, y - 1) not in plansza
prawo = (x, y + 1) not in plansza
gora = (x - 1, y) not in plansza
dol = (x + 1, y) not in plansza
return (lewo and prawo) or (gora and dol)
def liczba_zdejmowalnych(plansza, n, m):
"""Oblicza liczbę klocków, które można zdjąć."""
return sum(1 for x, y in plansza if czy_mozna_zdjac(x, y, plansza, n, m))
def rozwiazanie(n, m, k, q, klocki, ruchy):
plansza = set(klocki) # Zbiór pól z klockami
wyniki = [liczba_zdejmowalnych(plansza, n, m)]
for x, y in ruchy:
if (x, y) in plansza:
plansza.remove((x, y)) # Zdjęcie klocka
else:
plansza.add((x, y)) # Dostawienie klocka
wyniki.append(liczba_zdejmowalnych(plansza, n, m))
return wyniki
if __name__ == "__main__":
# Wczytywanie wejścia
n, m, k, q = map(int, sys.stdin.readline().split())
klocki = [tuple(map(int, sys.stdin.readline().split())) for _ in range(k)]
ruchy = [tuple(map(int, sys.stdin.readline().split())) for _ in range(q)]
# Rozwiązanie i wypisanie wyników
for wynik in rozwiazanie(n, m, k, q, klocki, ruchy):
print(wynik)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import sys def czy_mozna_zdjac(x, y, plansza, n, m): """Sprawdza, czy klocek na (x, y) można zdjąć.""" if (x, y) not in plansza: return False # Nie ma klocka na tym polu lewo = (x, y - 1) not in plansza prawo = (x, y + 1) not in plansza gora = (x - 1, y) not in plansza dol = (x + 1, y) not in plansza return (lewo and prawo) or (gora and dol) def liczba_zdejmowalnych(plansza, n, m): """Oblicza liczbę klocków, które można zdjąć.""" return sum(1 for x, y in plansza if czy_mozna_zdjac(x, y, plansza, n, m)) def rozwiazanie(n, m, k, q, klocki, ruchy): plansza = set(klocki) # Zbiór pól z klockami wyniki = [liczba_zdejmowalnych(plansza, n, m)] for x, y in ruchy: if (x, y) in plansza: plansza.remove((x, y)) # Zdjęcie klocka else: plansza.add((x, y)) # Dostawienie klocka wyniki.append(liczba_zdejmowalnych(plansza, n, m)) return wyniki if __name__ == "__main__": # Wczytywanie wejścia n, m, k, q = map(int, sys.stdin.readline().split()) klocki = [tuple(map(int, sys.stdin.readline().split())) for _ in range(k)] ruchy = [tuple(map(int, sys.stdin.readline().split())) for _ in range(q)] # Rozwiązanie i wypisanie wyników for wynik in rozwiazanie(n, m, k, q, klocki, ruchy): print(wynik) |
English