
전구의 상태를 주어진 명령어를 다 수행한 결과 전구는 어떤 상태인지 알아내는 문제이다.
전구의 상태는 0(꺼진거), 1(켜진거) 2가지가 있다.
명령어의 종류는 4가지가 있다.
[i, x] - i 번째 전구의 상태를 x로 변경[l, r] - l번째부터 r번째까지의 전구의 상태를 변경(0 -> 1, 1 -> 0)[l, r] - l번째부터 r번째까지의 전구를 끔[l, r] - l번째부터 r번째까지의 전구를 킴int[] state = new int[N];
st = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++) {
state[i] = Integer.parseInt(st.nextToken());
}
if(a == 1) { // 1번 명령어
state[b - 1] = c;
}
if(a == 2) { // 2번 명령어
for(int j = b; j <= c; j++) {
if(state[j - 1] == 0) {
state[j - 1] = 1;
} else {
state[j - 1] = 0;
}
}
}
if(a == 3) { // 3번 명령어
for(int j = b; j <= c; j++) {
state[j - 1] = 0;
}
}
if(a == 4) { // 4번 명령어
for(int j = b; j <= c; j++) {
state[j - 1] = 1;
}
}
for(int i = 0; i < state.length; i++) {
System.out.print(state[i] + " ");
}
import java.io.*;
import java.util.*;
public class No_21918 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] state = new int[N];
st = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++) {
state[i] = Integer.parseInt(st.nextToken());
}
for(int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
if(a == 1) {
state[b - 1] = c;
}
if(a == 2) {
for(int j = b; j <= c; j++) {
if(state[j - 1] == 0) {
state[j - 1] = 1;
} else {
state[j - 1] = 0;
}
}
}
if(a == 3) {
for(int j = b; j <= c; j++) {
state[j - 1] = 0;
}
}
if(a == 4) {
for(int j = b; j <= c; j++) {
state[j - 1] = 1;
}
}
}
for(int i = 0; i < state.length; i++) {
System.out.print(state[i] + " ");
}
}
}