import sys
input = sys.stdin.readline
N,M = map(int,input().split())
arr = list(map(int,input().split()))
cnt = [0]*(N+1)
for _ in range(M):
command,x,y = map(int,input().split())
x -= 1
if command == 1:
arr[x] = y
elif command == 2:
y -= 1
for ind in range(x,y+1):
arr[ind] = (arr[ind]+1)%2
elif command == 3:
y-=1
for ind in range(x,y+1):
arr[ind] = 0
else:
y -= 1
for ind in range(x,y+1):
arr[ind] = 1
print(*arr)
이 문제는 문제에 주어진 조건대로 배열의 상태를 바꿔주면 되는 문제였다.
전체 배열의 크기가 4000이고, 최대 명령이 4000이라,
최악의 경우라 해도 1600만번밖에 안되므로, 문제에 주어진 조건대로 돌리면 되는 문제이다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 21920 서로소 평균 (0) | 2021.06.10 |
---|---|
[BOJ/백준] 21919 소수 최소 공배수 (0) | 2021.06.10 |
[BOJ/백준] 17470 배열 돌리기 5 (0) | 2021.06.10 |
[BOJ/백준] 20924 트리의 기둥과 가지 (0) | 2021.06.07 |
[BOJ/백준] 20300 서강근육맨 (0) | 2021.06.07 |