CCC-20 (2020) - J5S2 (Escape Room)

View as PDF

Submit solution

Points: 50 (partial)
Time limit: 1.0s
Memory limit: 256M

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

Πρέπει να προσδιορίσετε αν είναι δυνατόν να αποδράσετε από ένα δωμάτιο. Το δωμάτιο είναι ένα πλέγμα M \times N διαστάσεων με κάθε θέση (κελί) να περιέχει έναν θετικό ακέραιο αριθμό. Οι γραμμές αριθμούνται με 1, 2,  ... , M και οι στήλες αριθμούνται με 1, 2, . . . , N. Για να αναφερθούμε στο κελί στη γραμμή r και στη στήλη c χρησιμοποιούμε το (r,\;c). Ξεκινάτε από την πάνω αριστερή γωνία στο (1,\;1) και εξέρχεστε από την κάτω δεξιά γωνία στο (M,\;N). Εάν βρίσκεστε σε ένα κελί που περιέχει την τιμή x, τότε μπορείτε να μεταβείτε σε οποιοδήποτε κελί (a,\;b) που ικανοποιεί τη σχέση a \times b = x. Για παράδειγμα, αν βρίσκεστε σε ένα κελί που περιέχει την τιμή 6, μπορείτε να μεταπηδήσετε στο κελί (2,\;3).

Σημειώστε ότι από ένα κελί που περιέχει την τιμή 6, υπάρχουν μέχρι τέσσερα κελιά στα οποία μπορείτε να μεταπηδήσετε: (2,\;3), (3,\;2), (1,\;6), ή (6,\;1). Αν το δωμάτιο είναι ένα πλέγμα 5 επί 6, δεν υπάρχει γραμμή 6, οπότε μόνο οι τρεις πρώτες μεταπηδήσεις θα είναι εφικτές.

Είσοδος

Η πρώτη γραμμή της εισόδου θα είναι ένας ακέραιος αριθμός M\;(1 \le M \le 1000). Η δεύτερη γραμμή της εισόδου θα είναι ένας ακέραιος αριθμός N\;(1 \le N \le 1000). Τα υπόλοιπα δεδομένα της εισόδου δίνουν τους θετικούς ακέραιους αριθμούς στα κελιά του δωματίου των M γραμμών και N στηλών. Η είσοδος αποτελείται επιπλέον από M γραμμές όπου κάθε γραμμή περιέχει N θετικούς ακέραιους αριθμούς, ο καθένας μικρότερος ή ίσος με 1000000, χωρισμένους με κενά διαστήματα.

Για 1 από τους 15 διαθέσιμους βαθμούς, M = 2 και N = 2.

Για επιπλέον 2 από τους 15 διαθέσιμους βαθμούς, M = 1.

Για επιπλέον 4 από τους 15 διαθέσιμους βαθμούς, όλοι οι ακέραιοι αριθμοί στα κελιά θα είναι μοναδικοί.

Για επιπλέον 4 από τους 15 διαθέσιμους βαθμούς, M \le 200 και N \le 200.

Έξοδος

Αν είναι εφικτό να δραπετεύσετε από το δωμάτιο, εξάγετε yes. Διαφορετικά, εξάγετε no.

Παράδειγμα

input

3
4
3 10 8 14
1 11 12 12
6  2  3  9

output

yes
Επεξήγηση του παραδείγματος:

Ξεκινώντας από το κελί στο (1,\;1) που περιέχει τον αρθμό 3, μια δυνατότητα που έχετε είναι να μεταβείτε στο κελί στο (1,\;3). Αυτό το κελί περιέχει τον αριθμό 8, οπότε από εκεί θα μπορούσατε να μεταπηδήσετε στο κελί στο (2,\;4). Αυτό σας οδηγεί σε ένα κελί που περιέχει τον αριθμό 12, από το οποίο μπορείτε να μεταπηδήσετε στην έξοδο στο (3,\;4). Ένας άλλος τρόπος διαφυγής είναι να μεταπηδήσετε από το αρχικό κελί στο κελί στο (3,\;1), και από εκεί στο κελί στο (2,\;3) στην έξοδο.

Οδηγίες:

  1. Ο online grader ξεκινά τον έλεγχο των υποβολών χρησιμοποιώντας το παράδειγμα εισόδου. Όλες οι άλλες δοκιμές παραλείπονται εάν η δοκιμή του παραδείγματος δεν είναι επιτυχής. Εάν επιχειρείτε να εξεταστείτε μόνο στα τρία πρώτα επίπεδα (για τους πρώτους 7 βαθμούς), τότε μπορεί να θέλετε να χειριστείτε τις συγκεκριμένες τιμές του παραδείγματος της εισόδου ως ειδική περίπτωση.

  2. Για το τελευταίο επίπεδο (που αξίζει 2 βαθμούς), εάν χρησιμοποιείτε Java, τότε ο Scanner πιθανόν να πάρει πάρα πολύ χρόνο για να διαβάσει τον μεγάλο όγκο δεδομένων. Μια πολύ ταχύτερη εναλλακτική λύση είναι ο BufferedReader.


Comments

There are no comments at the moment.