Feladat: S.57 Korcsoport: - Nehézségi fok: -
Füzet: 2010/november, 488. oldal  PDF  |  MathML 

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Egy sakktáblát szeretnénk lefedni (hézagmentesen és átfedések nélkül) dominókkal úgy, hogy a tábla bizonyos mezőit kizártuk (a kizárt mezőkre nem kerülhet dominó).
Készítsünk programot, amely a standard bemenetről beolvassa a tábla méretét, valamint a kizárt mezőket, és kiszámít egy megfelelő lefedést, amennyiben létezik.
A bemenet szerkezete a következő: Az első sorban két, szóközzel elválasztott egész szám, a tábla mérete (1N100), és a kizárt mezők (0MNN) száma található. A következő M sor mindegyikében, szóközzel elválasztva, egy-egy kizárt mező sor és oszlop koordinátái szerepelnek (1I,JN).
Ha létezik megfelelő lefedés, akkor a standard kimenetre írjunk ki N sort, amelyek mindegyikében N szám található. Az i. sor j. száma a sakktábla i. sorának j. mezőjét lefedő dominó sorszáma, ha az adott mező nem kizárt, egyébként 0. A dominók sorszámozása tetszőleges (különböző dominók különböző sorszámot kell, hogy kapjanak). Ha nem létezik megfelelő lefedés, akkor a ,,nem fedhető le'' szöveget írjuk ki. A futási időlimit tesztesetenként 10 másodperc.

 
Példa bemenetPélda kimenet  4 41 1 0 2   1 33 4 4 2   3 23 0 0 5   3 30 6 6 5   4 1
 

Beküldendő a feladat megoldását tartalmazó forrás és projektállományok (az .exe és más a fordító által generált kiegészítő állományok nélkül), valamint a megoldás menetét röviden bemutató dokumentáció egy s57.zip tömörített mappában.
Értékelés: 8 pont szerezhető az olyan programmal, ami bármilyen (a fenti feltételeknek megfelelő) tesztesetet képes megoldani (ha a futásidő túllépi a 10 mp-t, akkor úgy tekintjük, hogy nem tudta megoldani az adott tesztesetet). A legföljebb 10×10-es táblákat megoldó program 5 pontot ér. További 2 pont szerezhető a dokumentációval.