Here is the solution I came up with.
The idea is based on the following assumption: from starting point of (0, 
0) the Fan can reach Peppurr in the fastest within abs(x) + abs(y) minutes, 
assuming that Peppurr is on (x, y). This doesn't depend on the way Fan 
choose: either it's half a rectangle with sides x and y or it is a stairs 
or combined. Geometrically all the FASTESTS ways are equal to the way of 
sides of rectangle = |x| + |y|.

Based on that, after we read the initial coordinates and during the reading 
of Peppurr path char-by-char we can do 3 things:
1. update Peppurr coordinates 
2. add the number of minutes passed since Peppurr started
3. compute the time of Fan will reach the Peppurr's coordinanates.

Example:
3 2 SSSW

step-by-step calculation sequence will look like that:
Peppurr move | Peppurr's coordinates after move | *Peppurr's minutes*  | *Fan 
minutes* to reach Peppurr's coordinates = |x| + |y|
                                        (3, 2)                              
            0                                                  5
        S                              (3, 1)                              
           1                                                   4
        S                              (3, 0)                              
           2                                                   3
        S                              (3, -1)                              
          3                                                   4
        W                             (2, -1)                              
          4                                                   3

So as soon as *Fan minutes* >= *Peppurr's minutes*, the alg stops. Result = 
Max(*Fan minutes*, *Peppurr's minutes*)
Obviously, the solution is IMPOSSIBLE if we reached the end of path and the 
previous condition hasn't been met.

The time complexity is O(n), where n is the length of Peppurr's path, which 
needs to be read down to end in worst case. 

-- 
You received this message because you are subscribed to the Google Groups 
"Google Code Jam" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-code/7b2e1fb4-f3a3-48b6-b415-4a1bd7dffe50%40googlegroups.com.

Reply via email to