|시간 제한||메모리 제한||제출||정답||맞은 사람||정답 비율|
|5 초||512 MB||0||0||0||0.000%|
One sunny day, Dick T. Mustang found an ancient personal computer in the closet. He brought it back to his room and turned it on with a sense of nostalgia, seeing a message coming on the screen:
BASIC is a programming language designed for beginners, and was widely used from 1980‘s to 1990’s. There have been quite a few BASIC dialects. Some of them provide the PLAY statement, which plays music when called with a string of a musical score written in Music Macro Language (MML). Dick found this statement is available on his computer and accepts the following commands in MML:
Notes: Cn, C+n, C-n, Dn, D+n, D-n, En,...,... (n = 1,2,4,8,16,32,64,128 + dots) Each note command consists of a musical note followed by a duration specifier.
Each musical note is one of the seven basic notes: ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘A’, and ‘B’. It can be followed by either ‘+’ (indicating a sharp) or ‘-’ (a flat). The notes ‘C’ through ‘B’ form an octave as depicted in the figure below. The octave for each command is determined by the current octave, which is set by the octave commands as described later. It is not possible to play the note ‘C-’ of the lowest octave (1) nor the note ‘B+’ of the highest octave (8).
Each duration specifier is basically one of the following numbers: ‘1’, ‘2’, ‘4’, ‘8’, ‘16’, ‘32’, ‘64’, and ‘128’, where ‘1’ denotes a whole note, ‘2’ a half note, ‘4’ a quarter note, ‘8’ an eighth note, and so on. This specifier is optional; when omitted, the duration will be the default one set by the L command (which is described below). In addition, duration specifiers can contain dots next to the numbers. A dot adds the half duration of the basic note. For example, ‘4.’ denotes the duration of ‘4’ (a quarter) plus ‘8’ (an eighth, i.e. half of a quarter), or as 1.5 times long as ‘4’. It is possible that a single note has more than one dot, where each extra dot extends the duration by half of the previous one. For example, ‘4..’ denotes the duration of ‘4’ plus ‘8’ plus ‘16’, ‘4...’ denotes the duration of ‘4’ plus ‘8’ plus ‘16’ plus ‘32’, and so on. The duration extended by dots cannot be shorter than that of ‘128’ due to limitation of Dick‘s computer; therefore neither ’128.‘ nor ’32...‘ will be accepted. The dots specified without the numbers extend the default duration. For example, ’C.‘ is equivalent to ’C4.‘ when the default duration is ’4‘. Note that ’C4C8‘ and ’C4.’ are unequivalent; the former contains two distinct notes, while the latter just one note.
As an amateur composer, Dick decided to play his pieces of music by the PLAY statement. He managed to write a program with a long MML sequence, and attempted to run the program to play his music — but unfortunately he encountered an unexpected error: the MML sequence was too long to be handled in his computer’s small memory!
Since he didn’t want to give up all the efforts he had made to use the PLAY statement, he decided immediately to make the MML sequence shorter so that it fits in the small memory. It was too hard for him, though. So he asked you to write a program that, for each given MML sequence, prints the shortest MML sequence (i.e. MML sequence containing minimum number of characters) that expresses the same music as the given one. Note that the final values of octave, volume, and default duration can be differrent from the original MML sequence.
The input consists of multiple data sets. Each data set is given by a single line that contains an MML sequence up to 100,000 characters. All sequences only contain the commands described above. Note that each sequence contains at least one note, and there is no rest before the first note and after the last note.
The end of input is indicated by a line that only contains “*”. This is not part of any data sets and hence should not be processed.
For each test case, print its case number and the shortest MML sequence on a line.
If there are multiple solutions, print any of them.
C4C4G4G4A4A4G2F4F4E4E4D4D4C2 O4C4.C8F4.F8G8F8E8D8C2 B-8>C8<B-8V40R2R..R8.V100EV50L1CG *
Case 1: CCGGAAG2FFEEDDC2 Case 2: C.C8F.L8FGFEDC2 Case 3: L8B-B+B-RL1RE4V50CG