CCC-24 (2024) - S3 (Swipe)

View as PDF

Submit solution

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

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

Το Swipe είναι ένα νέο παιχνίδι για κινητά που πρόσφατα απέκτησε μεγάλη δημοτικότητα. Σε κάθε επίπεδο του Swipe, σας δίνονται 2 σειρές ακεραίων αριθμών που μπορούν να αναπαρασταθούν ως πίνακες A και B μεγέθους N . Ο στόχος στο Swipe είναι να νικήσετε το κάθε επίπεδο μετατρέποντας τον πίνακα A στον πίνακα B.

Υπάρχουν δύο swipe ενέργειες που μπορείτε να εκτελέσετε στον πίνακα A.

  • Swipe προς τα δεξιά: Επιλέξτε τον υποπίνακα [l, r] και θέστε A_i = A_l για όλα τα l \le i \le r.
  • Swipe προς τα αριστερά: Επιλέξτε τον υποπίνακα [l, r] και θέστε A_i = A_r για όλα τα l \le i \le r.

Για παράδειγμα, ξεκινώντας με τον πίνακα A = [0, 1, 2, 3, 4, 5], αν κάνουμε swipe δεξιά το [2, 4], θα λάβουμε τον πίνακα [0, 1, 2, 2, 2, 2, 2, 5]. Αν, αντίθετα, ξεκινήσουμε με τον ίδιο πίνακα A και κάνουμε swipeα ριστερά στο [3, 5], θα λάβουμε τον πίνακα [0, 1, 2, 5, 5, 5, 5]. Σημειώστε ότι αυτοί οι πίνακες έχουν δείκτη 0.

Δυστυχώς, το παιχνίδι είναι προβληματικό και περιέχει επίπεδα που είναι αδύνατο να κερδιθούν. Προσδιορίστε αν είναι δυνατόν να μετασχηματιστεί ο πίνακας A σε πίνακα B. Αν είναι δυνατόν, προσδιορίστε μια ακολουθία από swipes που μετατρέπει τον πίνακα A σε πίνακα B.

Είσοδος

Η πρώτη της γραμμή εισόδου θα αποτελείται από έναν θετικό ακέραιο αριθμό N, που αντιπροσωπεύει το μήκος καθενός από τους δύο πίνακες ακεραίων αριθμών.

Η δεύτερη γραμμή της εισόδου θα περιέχει τους N ακέραιους αριθμούς, που περιέχονται στον πίνακα A, χωρισμένους μεταξύ τους με κενά διαστήματα.

Η τρίτη γραµµή της εισόδου θα περιέχει τους N ακέραιους αριθμούς, που περιέχονται στον πίνακα B, χωρισμένους μεταξύ τους με κενά διαστήματα.

Ο ακόλουθος πίνακας δείχνει πώς κατανέμονται οι 15 διαθέσιμοι βαθμοί:

Βαθμοί Όρια
2 N = 2,\; 1 \le A_i,\; B_i \le 3
4 1 \le N \le 8,\; 1 \le A_i,\; B_i \le 8
4 1 \le N \le 500,\; 1 \le A_i,\; B_i \le 3000
5 1 \le N \le 300.000,\; 1 \le A_i,\; B_i \le 300.000

Σημειώστε ότι για ένα υποπρόβλημα που αξίζει M βαθμούς, θα λάβετε \frac{M}{2} βαθμούς για μια λύση που εξάγει σωστά την πρώτη γραμμή εξόδου.

Έξοδος

Η πρώτη γραμμή της εξόδου θα περιέχει τη λέξη YES αν υπάρχει μια ακολουθία σαρώσεων (swipes) που μπορεί να μετασχηματίσει τον πίνακα \(Α\) σε πίνακα B διαφορετικά, η πρώτη γραμμή της εξόδου θα περιέχει τη λέξη NO.

Εάν η πρώτη γραμμή της εξόδου εμπεριέχει τη λέξη YES, η επόμενη γραμμή θα περιέχει έναν μη αρνητικό ακέραιο αριθμό K\;(K \le N), ο οποίος υποδεικνύει τον αριθμό των σαρώσεων. Κάθε μία από τις επόμενες K γραμμές θα περιέχει τρεις τιμές χωρισμένες ανά δύο με κενά διαστήματα: D_j , l_j και r_j . Η τιμή D_j θα είναι είτε R είτε L, υποδεικνύοντας ότι η j-οστή σάρωση είναι είτε δεξιά είτε αριστερή σάρωση, αντίστοιχα. Οι τιμές l_j και r_j υποδεικνύουν το αριστερό και το δεξί άκρο της σάρωσης, όπου 0 \le l_j \le r_j < N .

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

input

3
3 1 2
3 1 1

output

YES
1
R 1 2

input

4
1 2 4 3
1 4 2 3

output

NO

input

4
2 1 4 3
2 1 4 3

output

YES
0

Comments

There are no comments at the moment.