Solutions Of Google Code Jam 2008 Qualification Round
Sign in

Solutions of Google Code Jam 2008 Qualification Round

Software Engg. at Oracle
I was able to solve two problems (out of three) of the 'Qualification Round' - "A. Saving the Universe" and "B. Train Timetable". I am giving here pseudo code to solve them. Problems can be seen here.

A. Saving the Universe:
Step 1:
num_switches = -1.
Step 2: If incoming_queries is empty then return num_switches else goto Step 3.
Step 3: If there is any engine in search_engines, which is not present in
incoming_queries then return (num_switches + 1) else goto Step 4.
Step 4: Find the engine in the
incoming_queries such that it's index (index of the first occurrence) is more than the index of other engines in the incoming_queries. Store the index of this engine in max_index.
i.e. max_index = MAX{index(
engine) : index(engine) is the index of the engine in incoming_queries where engine belongs to search_engines}
Step 5: Remove queries of index 0 to max_index-1 from
incoming_queries, goto Step 2.

B. Train Timetable
Step 1:
Converts all the times in minutes while storing. For trips from A to B, store all the departure times in a list departs_from_A and arrivals times in a list ready_at_B, similarly for trips from B to A, store all the departure times in a list departs_from_B and arrivals times in list ready_at_A.
Step 2: Add turnaround time in the each entry of ready_at_A and ready_at_B.
Step 3: Sort all the four lists in ascending order.
Step 4: fromA = 0 and fromB = 0

Step 5: If departs_from_A is empty then goto Step 9 else goto Step 6.
Step 6: If ready_at_A is non-empty and first entry of departs_from_A >= first entry of ready_at_A then remove the first element from ready_at_A and goto Step 8 else goto Step 7.
Step 7: fromA = fromA + 1
Step 8: Remove the first element from departs_from_A and goto Step 5.

Step 9: If departs_from_B is empty then goto Step 13 else goto Step 10.
Step 10: If ready_at_B is non-empty and first entry of departs_from_B >= first entry of ready_at_B then remove the first element from ready_at_B and goto Step 12 else goto Step 11.
Step 11: fromB = fromB + 1
Step 12: Remove the first element from departs_from_B and goto Step 9.

Step 13: return fromA and fromB.


I chose "Python" as a programming language for the coding. My code can be downloaded from the score board of the "Qualification Round", my rank is "2589" and user id is "shail229".

start_blog_img