문제
입력
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 있다. 셋째 줄에는 학생수가 주어진다. 학생수는 100 이하인 양의 정수이다. 넷째 줄부터 마지막 줄까지 한 줄에 한 학생의 성별, 학생이 받은 수가 주어진다. 남학생은 1로, 여학생은 2로 표시하고, 학생이 받은 수는 스위치 개수 이하인 양의 정수이다. 학생의 성별과 받은 수 사이에 빈칸이 하나씩 있다.
출력
스위치의 상태를 1번 스위치에서 시작하여 마지막 스위치까지 한 줄에 20개씩 출력한다. 예를 들어 21번 스위치가 있다면 이 스위치의 상태는 둘째 줄 맨 앞에 출력한다. 켜진 스위치는 1, 꺼진 스위치는 0으로 표시하고, 스위치 상태 사이에 빈칸을 하나씩 둔다.
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
vector<int> v(n+1);
for (int i = 1; i < n+1; i++)
{
cin >> v[i];
}
int k;
cin >> k;
while (k--)
{
int sex, number;
cin >> sex >> number;
for (int i = 1; i < n + 1; i++)
{
if (sex == 1)
{
if (i % number == 0)
{
if (v[i] == 1)
v[i] = 0;
else
v[i] = 1;
}
}
else
{
if (i == number)
{
int left = i - 1;
int right = i + 1;
while (left >= 1 && right <= n && v[left] == v[right])
{
left--;
right++;
}
for (int j = left + 1; j < right; j++)
v[j] = 1 - v[j];
}
}
}
}
for (int i = 1; i <= n; i++) {
cout << v[i] << " ";
if (i % 20 == 0) cout << "\n";
}
}