becuri

Time limit: 0.1s Memory limit: 32MB Input: becuri.in Output: becuri.out

Un panou publicitar de formă dreptunghiulară conţine becuri, unul lângă altul, aliniate pe nn linii şi mm coloane.

Fiecare bec are asociat un comutator. Prin acţionarea comutatorului unui bec se schimbă starea tuturor becurilor de pe linia lui şi de pe coloana lui, în afară de starea sa. Prin schimbarea stării înţelegem trecerea din starea în care se află în starea opusă (stins \rightarrow aprins, aprins \rightarrow stins).

Cerinţă

Să se realizeze un program care determină numărul minim de acţionări de comutatoare astfel încât în final toate becurile de pe panou să fie stinse, dacă acest lucru este posibil.

Date de intrare

Fişierul de intrare becuri.in are pe prima linie două numere naturale separate prin spaţiu nn şi mm reprezentând numărul de linii, respectiv numărul de coloane ale panoului publicitar.
Următoarele nn linii vor conţine câte mm întregi separaţi prin câte un spaţiu, fiecare întreg reprezentând starea iniţială a unui bec, 11 dacă becul este aprins şi 00 dacă acesta este stins.

Date de ieşire

Fişierul de ieşire becuri.out va conţine o singură linie pe care se va scrie un întreg ce reprezintă numărul minim de acţionări de comutatoare pentru a stinge toate becurile, sau -1 dacă pentru configuraţia iniţială dată nu există soluţie.

Restricţii și precizări

  • 1n,m5001 \leq n, m \leq 500

Exemplu

becuri.in

3 3
0 0 1
0 0 1
1 1 0

becuri.out

1

Explicație

Acţionăm comutatorul din poziţia (3,3)(3, 3).

Log in or sign up to be able to send submissions!