QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#18406. Kegilaan Membalik

統計

Pak Nežmah menemukan sebuah kisi dengan $n$ baris dan $m$ kolom yang diisi dengan angka $0$ dan $1$. Karena OCD-nya, ia ingin mengubah semua angka $1$ di dalam kisi menjadi $0$. Ia memiliki $k$ pasangan bilangan terurut $(a_i, b_i)$ yang ia sukai. Satu-satunya operasi yang boleh ia lakukan adalah sebagai berikut:

  • Pilih sebuah sel $(r, c)$ yang berada di dalam baris pertama atau kolom pertama.
  • Pilih satu pasangan bilangan $(a, b)$ yang ia sukai.
  • Balik semua angka di dalam sel-sel yang termuat dalam persegi panjang dengan tinggi $a$ dan lebar $b$ yang pojok kiri atasnya adalah sel $(r, c)$. Membalik berarti mengubah semua angka $0$ menjadi $1$, dan angka $1$ menjadi $0$. Persegi panjang tersebut harus sepenuhnya berada di dalam kisi.

Bantulah Nežmah membersihkan kisi tersebut!

Masukan

Baris pertama berisi sebuah bilangan bulat tunggal $t$ ($1 \le t \le 300$) — banyaknya kasus uji.

Baris pertama dari setiap kasus uji berisi $3$ bilangan bulat $n$, $m$, dan $k$ ($2 \le n, m \le 1000, 1 \le k \le 20$), ukuran kisi dan banyaknya pasangan $(a_i, b_i)$.

$n$ baris berikutnya masing-masing berisi $m$ karakter, yang semuanya adalah 0 atau 1, yang menjelaskan kisi tersebut.

$k$ baris berikutnya masing-masing berisi dua bilangan bulat $a_i$ dan $b_i$ ($1 \le a_i < n, 1 \le b_i < m$, semua pasangan $(a_i, b_i)$ berbeda).

Dijamin bahwa jumlah $n$ dan jumlah $m$ di semua kasus uji tidak melebihi $1000$.

Keluaran

Untuk setiap kasus uji, keluarkan banyaknya operasi ($0 \le op \le k(n + m)$).

Pada $op$ baris berikutnya, keluarkan $3$ bilangan bulat $r_i$, $x_i$, dan $y_i$ ($1 \le r_i \le k, 1 \le x_i \le n - a_{r_i} + 1, 1 \le y_i \le m - b_{r_i} + 1$, setidaknya satu dari $x_i$ dan $y_i$ sama dengan $1$), yang berarti Anda memilih untuk membalik semua sel di dalam persegi panjang dengan $a_{r_i}$ baris dan $b_{r_i}$ kolom yang pojok kiri atasnya berada di $(x_i, y_i)$.

Solusi dijamin selalu ada, dan jika terdapat beberapa solusi Anda dapat mengeluarkan yang mana saja.

Contoh

Masukan 1

5
6 6 2
000000
111110
000000
100001
011111
111110
5 5
3 5
4 5 2
10111
00101
10000
01100
1 3
2 1
2 2 1
00
00
1 1
5 5 3
10100
10010
00000
01101
00100
3 4
2 3
4 2
5 5 4
01010
01010
10101
00100
00100
2 2
2 3
3 2
3 3

Keluaran 1

5
1 1 2
2 1 2
2 2 1
2 3 1
2 4 1
6
1 1 1
1 1 2
1 4 1
2 1 3
2 1 5
2 3 1
0
10
1 1 1
1 1 2
1 2 1
2 1 1
2 1 2
2 4 1
3 1 1
3 1 2
3 1 4
3 2 1
5
3 1 4
2 1 3
4 1 2
2 4 1
3 3 1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.