The Dutch computer scientist Edsger Dijkstra made many important contributions to the field, including the shortest path finding algorithm that bears his name. This problem is not about that algorithm.
You were marked down one point on an algorithms exam for misspelling "Dijkstra" -- between D
and stra
, you wrote some number of characters, each of which was either i
, j
, or k
. You are prepared to argue to get your point back using quaternions, an actual number system (extended from complex numbers) with the following multiplicative structure:
To multiply one quaternion by another, look at the row for the first quaternion and the column for the second quaternion. For example, to multiply
As you can see from the above examples, the quaternions are not commutative -- that is, there are some
Negative signs before quaternions work as they normally do -- for any quaternions
You want to argue that your misspelling was equivalent to the correct spelling ijk
by showing that you can split your string of i
s, j
s, and k
s in two places, forming three substrings, such that the leftmost substring reduces (under quaternion multiplication) to jij
would be interpreted as jij
reduces to
Input Specification
The first line of the input gives the number of test cases, i
, j
, or k
. Note that the string never contains negative signs, 1
s, or any other characters. The string that you are to evaluate is the given string of kiij
, your input string would be kiijkiijkiij
.
Output Specification
For each test case, output one line containing "Case #x: y", where YES
or NO
, depending on whether the string can be broken into three parts that reduce to i, j, and k, in that order, as described above.
Limits
Memory limit: 1 GB.
Small dataset
Time limit: 30 seconds.
Large dataset
Time limit: 60 seconds.
Sample Input
5
2 1
ik
3 1
ijk
3 1
kji
2 6
ji
1 10000
i
Sample Output
Case #1: NO
Case #2: YES
Case #3: NO
Case #4: YES
Case #5: NO
In Case #1, the string is too short to be split into three substrings.
In Case #2, just split the string into i
, j
, and k
.
In Case #3, the only way to split the string into three parts is k
, j
, i
, and this does not satisfy the conditions.
In Case #4, the string is jijijijijiji
. It can be split into jij
(which reduces to i), iji
(which reduces to j), and jijiji
(which reduces to k).
In Case #5, no matter how you choose your substrings, none of them can ever reduce to a j or a k.
Note
This problem has different time limits for different batches. If you exceed the Time Limit for any batch, the judge will incorrectly display >60.000s
regardless of the actual time taken. Refer to the Limits section for batch-specific time limits.
This problem originally had a much higher time limit. However, as reference solutions were much faster, the Time Limit was been reduced accordingly.
Comments