https://www.acmicpc.net/problem/1244
조건에 맞게 단순 구현하는 문제.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br;
static BufferedWriter bw;
static StringTokenizer st;
static boolean[] swc;
static void onoff(int idx) {
if (swc[idx])
swc[idx] = false;
else
swc[idx] = true;
}
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine(), " ");
swc = new boolean[N];
for (int i = 0; i < N; i++) {
if (st.nextToken().equals("1")) {
swc[i] = true;
}
}
int std_N = Integer.parseInt(br.readLine());
for (int i = 0; i < std_N; i++) {
st = new StringTokenizer(br.readLine(), " ");
if (st.nextToken().equals("1")) {
int tmp = Integer.parseInt(st.nextToken());
for (int j = 0; j < N; j++) {
if ((j + 1) % tmp == 0) {
onoff(j);
}
}
} else {
int size = 1;
int tmp = Integer.parseInt(st.nextToken()) - 1;
onoff(tmp);
while (tmp - size >= 0 && tmp + size < N && swc[tmp + size] == swc[tmp - size]) {
onoff(tmp + size);
onoff(tmp - size++);
}
}
}
for (int i = 0; i < N; i++) {
if (i != 0 && i % 20 == 0) {
System.out.println();
}
if (swc[i])
System.out.print("1 ");
else
System.out.print("0 ");
}
}
}