F010B. Els alfils amenaçadors P67340


Statement
 

pdf   zip

html

Considereu un tauler d’escacs rectangular sobre el qual s’han disposat diversos alfils. Un alfil n’amenaça un altre si tots dos es troben a la mateixa diagonal i no n’hi ha cap altre entre ells dos. Es vol conèixer quines són totes les amenaces entre alfils.

Per exemple, considereu el tauler següent amb 4 files i 5 columnes:

unit=0.75cm linewidth=0.6pt (6,5.5)

(1,1)(1,0)6(0,0)(0,4) (1,1)(0,1)5(0,0)(5,0)

[c](0.5 , 1.5 )4 [c](0.5 , 2.5 )3 [c](0.5 , 3.5 )2 [c](0.5 , 4.5 )1

[c](1.5 ,0.5 )1 [c](2.5 ,0.5 )2 [c](3.5 ,0.5 )3 [c](4.5 ,0.5 )4 [c](5.5 ,0.5 )5

[c](1.5 ,1.5 )X [c](3.5 ,3.5 )X [c](4.5 ,2.5 )X [c](4.5 ,4.5 )X [c](5.5 ,2.5 )X

L’alfil de la posició (3,5) no té amenaces. L’alfil de la posició (4,1) amenaça el de la posició (2,3), i cap altre. L’alfil de la posició (2,3) amenaça els de les posicions (4,1), (1,4) i (3,4). El conjunt de totes les amenaces és:

(4,1)↔(2,3) 
(2,3)↔(4,1) 
(2,3)↔(1,4) 
(1,4)↔(2,3) 
(2,3)↔(3,4) 
(3,4)↔(2,3)

Feu un programa que llegeixi un tauler amb alfils i escrigui totes les seves amenaces.

Entrada

L’entrada comença amb el nombre de files i el nombre de columnes del tauler (dos enters estrictament positius). A continuació ve un tauler de la mida indicada, amb caràcters ‘|X|’ per marcar els alfils i punts per marcar les caselles buides.

Sortida

Per a cada amenaça d’un alfil a la posició (f1,c1) amb un altre alfil a la posició (f2,c2), cal escriure una línia amb el text “(|f1|,|c1|)<->(|f2|,|c2|)”. Les posicions es numeren de dalt a baix i d’esquerra a dreta, començant per ‍1.

Observació

L’ordre en què escriviu les línies és irrellevant. El Jutge donarà per bona qualsevol sortida que contingui totes les amenaces correctes, amb independència del seu ordre.

Public test cases
  • Input

    4 5
    ...X.
    ..X..
    ...XX
    X....
    

    Output

    (1,4)<->(2,3)
    (2,3)<->(3,4)
    (2,3)<->(4,1)
    (2,3)<->(1,4)
    (3,4)<->(2,3)
    (4,1)<->(2,3)
    
  • Input

    3 3
    XXX
    XXX
    XXX
    

    Output

    (1,1)<->(2,2)
    (1,2)<->(2,3)
    (1,2)<->(2,1)
    (1,3)<->(2,2)
    (2,1)<->(3,2)
    (2,1)<->(1,2)
    (2,2)<->(3,3)
    (2,2)<->(3,1)
    (2,2)<->(1,3)
    (2,2)<->(1,1)
    (2,3)<->(3,2)
    (2,3)<->(1,2)
    (3,1)<->(2,2)
    (3,2)<->(2,3)
    (3,2)<->(2,1)
    (3,3)<->(2,2)
    
  • Input

    6 11
    .....X.....
    ...........
    ...........
    ...........
    ...........
    XXXXXXXXXXX
    

    Output

    (1,6)<->(6,11)
    (1,6)<->(6,1)
    (6,1)<->(1,6)
    (6,11)<->(1,6)
    
  • Input

    1 1
    .
    

    Output

    
            
                                
  • Information
    Author
    Professorat de P1
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++