CCC-12 (2012) - J5S4 (A Coin Game)

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
A Coin Game

Όταν βαριέται, η Jo Coder παίζει το ακόλουθο παιχνίδι με κέρματα πάνω σε ένα τραπέζι. Παίρνει ένα σετ από διαφορετικά νομίσματα και τα τοποθετεί σε μια σειρά. Για παράδειγμα, ας πούμε ότι έχει ένα κέρμα(penny) (P, αξίας $0.01), ένα κέρμα(nickel) (N, αξίας $0.05) και ένα κέρμα(dime) (D, αξίας $0.10). Τα τοποθετεί σε μια τυχαία σειρά, (για παράδειγμα D\;N\;P), και έπειτα τα μετακινεί με σκοπό να τα τοποθετήσει σε γνησίως αύξουσα σειρά κατά αξία, στην προκειμένη P\;N\;D (δηλαδή, $0.01, $0.05, $0.10). Ακολουθεί συγκεκριμένους κανόνες:

  • Η αρχική παράταξη των κερμάτων ορίζει όλες τις θέσεις στις οποίες μπορούν να τοποθετηθούν κέρματα. Δηλαδή, δεν επιτρέπεται η τοποθέτηση επιπλέον θέσεων εκ των υστέρων, και ακόμη και αν σε μία από τις θέσεις δεν υπάρχει κέρμα κάποια στιγμή, η θέση εξακολουθεί να υπάρχει.
  • Το παιχνίδι αποτελείται από μια ακολουθία κινήσεων και σε κάθε κίνηση η Jo μετακινεί ένα νόμισμα από μία θέση σε μια γειτονική.
  • Τα νομίσματα μπορούν να στοιβάζονται, και σε μια κίνηση η Jo παίρνει πάντα το νόμισμα που βρίσκεται στην κορυφή από μια στοίβα και το μετακινεί στην κορυφή μιας άλλης.
  • Σε μια στοίβα κερμάτων, η Jo δεν τοποθετεί ποτέ ένα νόμισμα υψηλότερης αξίας πάνω σε ένα νόμισμα χαμηλότερης αξίας.

Για λόγους απλότητας, τα κέρματα θα έχουν διαδοχικές ακέραιες τιμές (π.χ. συμβολίζουμε το penny ως 1, το nickel ως 2, και το dime ως 3). Τότε, στο παραπάνω παράδειγμα, η Jo θα μπορούσε να παίξει το παιχνίδι με τον ακόλουθο τρόπο σε 20 κινήσεις (όπου XY δηλώνει ότι το νόμισμα X βρίσκεται πάνω από το νόμισμα Y):

Κίνηση Θέση 1 Θέση 2 Θέση 3
αρχική 3 2 1
1 3 12  
2 13 2  
3 13   2
4 3 1 2
5 3   12
6   3 12
7   13 2
8 1 3 2
9 1 23  
10   123  
Κίνηση Θέση 1 Θέση 2 Θέση 3
11   23 1
12 2 3 1
13 2 13  
14 12 3  
15 12   3
16 2 1 3
17 2   13
18   2 13
19   12 3
20 1 2 3

Για ορισμένες αρχικές διαμορφώσεις, δεν είναι πάντα δυνατό να επιτευχθεί ο στόχος της γνησίως αύξουσας διάταξης.

Είσοδος

Η είσοδος θα περιέχει κάποιο αριθμό αρχείων ελέγχου. Ένα αρχείο ελέγχου θα αποτελείται από δύο γραμμές. Η πρώτη γραμμή περιέχει έναν θετικό ακέραιο n\;(n < 5), ο οποίος είναι ο αριθμός των κερμάτων. Υποθέτουμε ότι τα κέρματα συμβολίζονται με 1, 2, 3, ...n. Η δεύτερη γραμμή θα περιέχει μια λίστα αριθμών από 1 έως n με τυχαία σειρά, η οποία αντιπροσωπεύει την αρχική διαμόρφωση των κερμάτων. Για το παραπάνω παράδειγμα, η είσοδος θα ήταν η εξής:

3
3\;2\;1

Το τέλος των αρχείων ελέγχου υποδηλώνεται με το 0 σε ξεχωριστή γραμμή.

Έξοδος

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

Παράδειγμα

input

3
3 2 1
2
2 1
0

output

20
IMPOSSIBLE

Comments

There are no comments at the moment.