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) |