Zadanie
Dobrá predpoveď
Počet bodov: 35, časový limit: 300ms
Buj sa rozhodol, že si vyskúša predpovedať počasie. Každý z predchádzajúcich \(n\) dní spravil \(m\) rôznych experimentov alebo pozorovaní, pričom výsledok každého z nich sa dá zosumarizovať ako áno/nie. Ako príklady uvedieme: či vonku svietilo slnko, či bolo oblačno, či bolo vidno mesiac, či boli banány v záhrade zelené, …
Každý z týchto dní si takisto zaznačil, či pršalo. Teraz by chcel vymyslieť logickú formulu, ktorá mu každý deň bude vedieť predpovedať, či bude pršať alebo nie. (Predstavte si niečo takéto: “Pršať bude práve vtedy, keď je oblačno a zároveň nesvieti slnko.”)
Táto formula musí byť samozrejme konzistentná s dátami, ktoré nazbieral. To znamená, že ak ju použije na predpoveď v každom z \(n\) pozorovaných dní, dá nám správnu odpoveď.
Nájdite jednu takú formulu, ak existuje.
Vstup a výstup
Na prvom riadku vstupu sú medzerou oddelené dve kladné celé čísla \(n\) a \(m\): počet dní a počet experimentov. Platí \(n \cdot m \leq 5\,000\). Nasleduje \(n\) riadkov, každý popisuje výsledky experimentov v príslušnom dni a tiež či v ten deň pršalo. Formát \(i\)-teho riadku je nasledovný: \[ k_{i, 1} k_{i, 2} \ldots k_{i, m} = p_i, \] pričom \(k_{i, j}\) je \(0\) (výsledok experimentu \(j\) je “nie”) alebo \(1\) (“áno”), a \(p_i\) je \(0\) (v daný deň nepršalo) alebo \(1\) (pršalo).
Ak neexistuje formula konzistentná s týmito pozorovaniami, vypíšte impossible. V opačnom prípade na výstup vypíšte ľubovoľnú jednu takú boolovskú formulu. Musí mať presne nasledovnú syntax:
- Boolovská formula je term.
- Term je buď:
- Premenná.
- Alebo \((t_1 \circ t_2 \circ \ldots \circ t_n)\) pre \(n \geq 1\), kde \(t_1, t_2\) sú termy a \(\circ\) je buď \(||\) (boolovský OR) alebo \(\&\&\) (boolovský AND). Ak \(n > 2\), tak takýto výraz čítame, že je uzátvorkovaný zľava, t.j. \((a\ ||\ b\ \&\&\ c)\) znamená \(((a\ ||\ b)\ \&\&\ c)\).
- Alebo \(!t\), kde \(t\) je term. Operátor \(!\) zodpovedá boolovskej negácii.
- Premenná je reťazec začínajúci znakom
x, za ktorým nasleduje ľubovoľné kladné celé číslo (vzťahujúce sa na výsledok príslušného experimentu). Medzery nemusíte vo formule uvádzať. Vaša formula musí byť dlhá aspoň \(1\) a nanajvýš \(100\,000\) znakov.
Príklad
Input:
5 3
1 0 0 = 0
0 1 1 = 0
0 1 0 = 1
0 0 1 = 1
0 0 0 = 1
Output:
!((x1) || (x2 && x3))
Input:
3 3
1 0 0 = 1
0 1 0 = 1
0 0 1 = 1
Output:
(x1 || x3 || !!x2)
Input:
2 1
0 = 0
0 = 1
Output:
impossible
Pre odovzdávanie sa musíš prihlásiť.