Кестені тазарту


Шешімді жөнелту

Ұпайлар: 100 (partial)
Уақыт шектеуі: 1.0s
Жад шектеуі: 256M

Author:
Problem type
Рұқсат етілген тілдер
Assembly, Awk, Brain****, C, C++, Java, Pascal, Perl, Python, Sed, Text

Сізде нөлдер мен бірліктерден тұратын кесте бар. Кестені тазарту үшін барлық бірліктерді нөлдерге айналдыруды қалайсыз.

Бірақ бір ереже бар: бір қадамда сіз бір қатарда немесе бір бағанда орналасқан екі әртүрлі ұяшықты таңдай аласыз және олардың мәндерін қарама-қарсы етіп ауыстырасыз:

  • егер ұяшықта \(0\) болса, ол \(1\) болады;

  • егер \(1\) болса, ол \(0\) болады.

Сіздің міндетіңіз — мүмкіндігінше аз қадамдармен кестені тазарту. Кейде тазарту мүмкін болмайды.

Әр тестте \(T\) параметрі көрсетіледі:

  • егер \(T = 0\), тек минималды қадамдар санын шығару керек;

  • егер \(T = 1\), операциялардың тізімін де шығару керек.

Операция екі ұяшықты таңдап, олардың мәндерін бір уақытта инверсиялауды білдіреді.

Енгізу

Бірінші жолда бір бүтін сан \(t\) \((1 \le t \le 100)\) — тестілер саны.

Келесі жолдарда тестілердің сипаттамалары беріледі.

Әр тест мыналардан тұрады:

  • үш бүтін саннан тұратын бір жол \(n\), \(m\), \(T\) \((1 \le n \cdot m \le 3 \cdot 10^5,\ T \in \{0, 1\})\) — кестенің өлшемдері және шығару түрі;

  • \(n\) жол, әрқайсысында \(m\) символ \(0\) немесе \(1\) — кестенің сипаттамасы.

Барлық тестілер бойынша ұяшықтардың жалпы саны \(3 \cdot 10^5\)-тен аспайтынына кепілдік беріледі.

Шығару

Әр тест үшін:

  • Егер кестені тазарту мүмкін болмаса, -1 шығарыңыз.

  • Әйтпесе, егер \(T = 0\), бір бүтін сан \(k\) — минималды қадамдар санын шығарыңыз.

  • Әйтпесе, егер \(T = 1\), бірінші жолда \(k\) шығарыңыз, содан кейін \(k\) жолда \(4\) бүтін сан \(r_1\ c_1\ r_2\ c_2\) — осы қадамда инверсияланған ұяшықтардың координаттары \((1 \le r_1, r_2 \le n;\ 1 \le c_1, c_2 \le m)\).

Бірнеше дұрыс жауап болса, кез-келгенін шығаруға болады.

Бағалау жүйесі

Ішкі есеп Қосымша шектеулер Ұпайлар Қажетті ішесептер
\(0\) Мысалдар \(0\)
\(1\) \(n = 1\),\(T = 0\) \(11\)
\(2\) \(t \le 10, n \cdot m \le 16\) \(20\)
\(3\) \(T = 0\) \(20\) \(1\)
\(4\) Қосымша шектеулерсіз \(49\) \(1,2,3\)

Мысалдар

Енгізу 1
3
2 3 0
101
110
1 4 1
0010
2 2 1
10
01
Жауап 1
2
-1
2
1 1 2 1
2 1 2 2

Ескертпелер

Бірінші тест:

Екі қадам жасауға болады:

  • \((1,1)\) және \((1,3)\) ұяшықтарын инверсиялау — \(1\)-ші қатар \([0\ 0\ 0]\) болады.

  • \((2,1)\) және \((2,2)\) ұяшықтарын инверсиялау — \(2\)-ші қатар \([0\ 0\ 0]\) болады.

Жауап: 2

Үшінші тест:

Матрицаны екі қадамда нөлге айналдыруға болады:

  • \((1,1)\) және \((2,1)\) ұяшықтарын инверсиялау — \(1\)-ші баған \([0\ 1]\) болады.

  • \((2,1)\) және \((2,2)\) ұяшықтарын инверсиялау — \(2\)-ші қатар \([0\ 0]\) болады.

Жауап: 2


Пікірлер

Қазіргі уақытта ешқандай пікір жоқ.