https://www.acmicpc.net/problem/1244
학생들은 입력되는 순서대로 자기의 성별과 받은 수에 따라 스위치의 상태를 바꾸었을 때, 스위치들의 마지막 상태를 출력하는 프로그램
def change(idx):
if switch[idx] == 1:
switch[idx] = 0
else:
switch[idx] = 1
return
n = int(input())
switch = [-1] + list(map(int, input().split()))
p = int(input())
for _ in range(p):
s, num = map(int, input().split())
if s == 1:
for i in range(num, n+1, num):
change(i)
elif s == 2:
change(num)
for i in range(n//2):
if num - i < 1 or num + i > n: break
if switch[num - i] == switch[num + i]:
change(num + i)
change(num - i)
else: break
for i in range(1, n+1):
print(switch[i], end=' ')
if i % 20 == 0:
print()
인덱스는 0으로 시작하는데 스위치 번호는 1부터 매겨져 있기 때문에 인덱스 0 값은 더미로 담아준다.
num - i < 1 or num + i > n 조건을 num - i > 1 and num + i < n로 해서 (예제 기준) 1, 5번 스위치가 안 바꼈다.