ACM ICPC World Finals 2016
Shortest judge solution: 2027 bytes. Shortest team solution (during contest): 2155 bytes.
First, notice that if a segment is on at one time, and off at another, it has to be working (or the answer will be “impossible”) — it can be neither burnt in nor burnt out. On the other hand, if a segment shows the same value in all the displays in the input, it is possible that it is burnt (in or out, depending on the value), and it gives us no information as to what time the clock is really showing.
So, the solution will first identify the working segments. There are 24 · 60 = 1440 different minutes the first display could possibly be showing. So, we can try them all, and check whether they match all the displays we are given in all the places where we know we have working segments. This way we get a list of possible starting times for the displays. If this list is empty, the answer will be “impossible”.
Otherwise, we already know the segments which are definitely working. For all the others, we need to find out if they are definitely burnt in / out, or is it possible that they are working correctly, but the same value happens to be displayed throughout the whole time range. For this, we need to — for each segment that always displays the same value — iterate over all the possible start times, and check if for at least one of them all the displays would indeed legitimately show that value. We have at most 1440 possible times, 100 displays and 28 segments, so there isn’t a real risk of running into problems with the time limit.
This problem needs care in implementation — you need to hard-code the shapes of all the digits, the positions of all the segments, take into account that clocks do not display leading zeroes for hours, but they do for minutes, and handle the wrapping of time around midnight. Which is why this problem did not attract too many solutions during the contest.