
Given a list of chat events for a mobile messaging system, reconstruct the visible conversation state. Each event is one of: send, deliver, read, edit, or delete, and includes a message_id, timestamp, and optional fields such as text or user_id. Events may arrive out of order and may be duplicated. Return the final ordered list of non-deleted messages with their latest text and highest status (sent < delivered < read).
Example 1:
Input: events = [
["send", "m1", 5, "hi"],
["deliver", "m1", 7, ""],
["read", "m1", 9, ""],
["send", "m2", 6, "yo"]
]
Output: [["m1", "hi", "read", 5], ["m2", "yo", "sent", 6]]
Explanation: m1 advances through statuses and appears before m2 because its send time is earlier.
Example 2:
Input: events = [
["edit", "m1", 8, "hello"],
["send", "m1", 5, "hi"],
["delete", "m1", 10, ""],
["send", "m2", 7, "ok"]
]
Output: [["m2", "ok", "sent", 7]]
Explanation: m1 is deleted, so it is excluded from the final conversation state.
1 <= len(events) <= 2 * 10^5[event_type, message_id, timestamp, payload]event_type is one of send, deliver, read, edit, deletetimestamp is an integer in the range [0, 10^9]events = [["send", "m1", 5, "hi"], ["deliver", "m1", 7, ""], ["read", "m1", 9, ""], ["send", "m2", 6, "yo"]]Output[["m1", "hi", "read", 5], ["m2", "yo", "sent", 6]]Whym1 reaches the highest status of read, and both messages are ordered by send timestamp.events = [["edit", "m1", 8, "hello"], ["send", "m1", 5, "hi"], ["delete", "m1", 10, ""], ["send", "m2", 7, "ok"]]Output[["m2", "ok", "sent", 7]]Whym1 is deleted and removed from the final conversation, leaving only m2.1 <= len(events) <= 2 * 10^5Each event is [event_type, message_id, timestamp, payload]event_type is one of send, deliver, read, edit, delete0 <= timestamp <= 10^9Duplicate events may appear and events may arrive in any orderdef reconstruct_chat(events):