목차

자료 구조의 왕

ps
링크acmicpc.net/…
출처BOJ
문제 번호31218
문제명자료 구조의 왕
레벨실버 4
분류

시뮬레이션

시간복잡도O(nm+q)
인풋사이즈n<=1000, m<=1000, q<=2*10^5
사용한 언어Python 3.11
제출기록38300KB / 400ms
최고기록400ms
해결날짜2024/01/08

풀이

코드

"""Solution code for "BOJ 31218. 자료 구조의 왕".

- Problem link: https://www.acmicpc.net/problem/31218
- Solution link: http://www.teferi.net/ps/problems/boj/31218
"""

import sys

GRASS = '0'
EMPTY = '1'


def main():
    n, m, Q = [int(x) for x in sys.stdin.readline().split()]
    grid = [[GRASS] * m for _ in range(n)]
    grass_count = n * m
    for _ in range(Q):
        match sys.stdin.readline().split():
            case '1', dy, dx, y, x:
                dy, dx, y, x = int(dy), int(dx), int(y) - 1, int(x) - 1
                while 0 <= y < n and 0 <= x < m and grid[y][x] == GRASS:
                    grid[y][x] = EMPTY
                    grass_count -= 1
                    y, x = y + dy, x + dx
            case '2', y, x:
                y, x = int(y) - 1, int(x) - 1
                print(grid[y][x])
            case '3',:
                print(grass_count)


if __name__ == '__main__':
    main()