
You are given an integer numberOfUsers representing the total number of users and an array events of size n x 3 .
Each events[i] can be either of the following two types:
Message Event: ["MESSAGE", "timestamp _i ", "mentions_string _i "]
This event indicates that a set of users was mentioned in a message at timestamp _i .
The mentions_string _i string can contain one of the following tokens:
id<number> : where <number> is an integer in range [0,numberOfUsers - 1] . There can be multiple ids separated by a single whitespace and may contain duplicates. This can mention even the offline users.
ALL : mentions all users.
HERE : mentions all online users.
Offline Event: ["OFFLINE", "timestamp _i ", "id _i "]
This event indicates that the user id _i had become offline at timestamp _i for 60 time units . The user will automatically be online again at time timestamp _i + 60 .
Return an array mentions where mentions[i] represents the number of mentions the user with id i has across all MESSAGE events.
All users are initially online, and if a user goes offline or comes back online, their status change is processed before handling any message event that occurs at the same timestamp.
Note that a user can be mentioned multiple times in a single message event, and each mention should be counted separately .
1 <= numberOfUsers <= 1001 <= events.length <= 100events[i].length == 3events[i][0] will be one of MESSAGE or OFFLINE .1 <= int(events[i][1]) <= 10 ^5The number of id<number> mentions in any "MESSAGE" event is between 1 and 100 .0 <= <number> <= numberOfUsers - 1It is guaranteed that the user id referenced in the OFFLINE event is online at the time the event occurs.