COCI-18 (2018) - Γύρος #4 - 4 (Slagalica)

View as PDF

Submit solution

Points: 40 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Slagalica

Από τότε που έμαθε πώς να λύνει τον κύβο του Ρούμπικ, ο Jurica ενδιαφέρθηκε και για άλλα παζλ αυτού του είδους και πρόσφατα δημιούργησε ο ίδιος ένα αινιγματικό παιχνίδι. Μπορούμε να φανταστούμε το παζλ του Jurica ως ένα τριγωνικό δίχτυ με τη μορφή ενός παραλληλογράμμου, του οποίου οι κόμβοι είναι διατεταγμένοι σε N σειρές και M στήλες. Οι σειρές επισημαίνονται από το 1 έως το N από κάτω προς τα πάνω και οι στήλες επισημαίνονται από το 1 έως το M από τα αριστερά προς τα δεξιά. Κάθε κόμβος συμβολίζεται με συντεταγμένες (x, y), όπου x είναι η σειρά και y είναι η στήλη. Κάθε κόμβος έχει μια μοναδική ακέραια τιμή μεταξύ του 1 και του N \cdot M γραμμένη σε αυτόν και το παζλ θεωρείται λυμένο όταν η πρώτη σειρά περιέχει αριθμούς από το 1 έως το M, διατεταγμένους από αριστερά προς τα δεξιά, η δεύτερη σειρά περιέχει αριθμούς από το M+1 έως το 2M, με την ίδια σειρά, κ.λπ. Η παρακάτω εικόνα δείχνει ένα λυμένο παζλ 3 σειρών και 4 στηλών.

coci18d4-figure-1.svg

Η διάταξη του παζλ μπορεί να αλλάξει με δύο τρόπους:

  1. Επιλέγοντας τον ρόμβο με μέγεθος μονάδας, του οποίου οι κόμβοι καθορίζονται από τις συντεταγμένες (x, y), (x+1, y), (x+1, y+1) και (x, y+1) και περιστρέφοντας τις τιμές των κόμβων κατά τη φορά κίνησης των δεικτών του ρολογιού.

    coci18d4-figure-2.svg
  2. Επιλέγοντας ένα ισόπλευρο τρίγωνο με μέγεθος μονάδας, του οποίου οι κόμβοι καθορίζονται από τις συντεταγμένες (x, y), (x+1, y+1) και (x, y+1) και περιστρέφοντας τις τιμές των κόμβων κατά τη φορά των δεικτών του ρολογιού.

    coci18d4-figure-3.svg

Μια βαρετή μέρα, ο Jurica ανακάτεψε το παζλ, γράφοντας τις κινήσεις που είχε κάνει σε ένα κομμάτι χαρτί. Αυτή την ακολουθία κινήσεων ονόμασε μέγιστη-κίνηση (mega-move) και εξήγησε την εφαρμογή της ως τη διαδοχική εφαρμογή των κινήσεων που γράφτηκαν στο χαρτί. Μετά από αυτό, έχει κάνει επανειλημμένα την ίδια mega-move αρκετές φορές. Παρατήρησε σύντομα μια ασυνήθιστη κανονικότητα. Ξεκινώντας από ένα λυμένο παζλ, μετά από ακριβώς K mega-moves, το παζλ θα λυθεί ξανά (η πρώτη φορά από την εφαρμογή των mega-moves).

Για δεδομένους ακέραιους αριθμούς N, M και K προσδιορίστε εάν υπάρχει mega-move που θα επιτρέψει στον Jurica να λύσει το παζλ μετά από ακριβώς K επαναλήψεις της mega-move, και αν ναι, εκτυπώστε αυτήν την ακολουθία κινήσεων.
Σημείωση: Η λύση δεν είναι απαραίτητα μοναδική και δεν χρειάζεται να είναι βέλτιστη ως προς τον αριθμό των κινήσεων, αλλά ο αριθμός των κινήσεων είναι περιορισμένος (βλ. ενότητα Είσοδος).

Είσοδος

Η πρώτη γραμμή περιέχει τρεις ακέραιους αριθμούς, τους N, M\;(2 \le N, M \le 100) και K\;(2 \le K \le 10^{12}).

Έξοδος

Εάν δεν υπάρχει τέτοια mega-move που να πληροί τις απαιτούμενες προϋποθέσεις, εκτυπώστε -1 στη γραμμή εξόδου.
Διαφορετικά, εκτυπώστε τον αριθμό των κινήσεων B\;(1 \le B \le 500\,000) στην πρώτη γραμμή και στις ακόλουθες B γραμμές μία κίνηση με την ακόλουθη μορφή:

  • "R \times y" (χωρίς τα εισαγωγικά), εάν είναι μια περιστροφή ενός ρόμβου (λειτουργία 1), ή
  • "T \times y" (χωρίς τα εισαγωγικά), εάν είναι μια περιστροφή ισόπλευρου τριγώνου (λειτουργία 2), ενώ η συντεταγμένη (x, y) αντιπροσωπεύει τον κάτω αριστερό κόμβο του ρόμβου ή του τριγώνου και αυτό σημαίνει ότι 1 \le x < N και 1 \le y < M.
Βαθμολογία

Σε δοκιμαστικές περιπτώσεις αξίας 40% των πόντων θα ισχύει ότι N, M \le 3 και K \le 20.

Παραδείγματα

input

2 3 2

output

5
R 1 1
R 1 1
T 1 1
T 1 1
T 1 1

input

3 3 12

output

3
R 1 1
T 2 2
T 2 1

input

5 4 116

output

-1

Comments

There are no comments at the moment.