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 |