Problem 1: Max planes you can shoot before any lands
You are given two equal-length arrays:
-
altitude[i]
: the initial altitude of plane
i
(positive integer)
-
descent[i]
: the amount plane
i
descends per second (positive integer)
Time proceeds in whole seconds. At each second t = 0, 1, 2, ... you may shoot down at most one plane instantly (before it descends for that second). After your shot (or if you skip), all remaining planes descend by their descent value for that second.
A plane lands successfully if its altitude becomes <= 0 after descending at the end of some second.
If any plane lands, the process stops immediately.
Task: Assuming you choose the best possible plane to shoot each second, return the maximum number of planes you can shoot down before the first successful landing occurs.
Input: altitude[], descent[] (same length n)
Output: integer (max planes shot)
Problem 2: Count user sessions from events
You are given:
-
events
: a list of pairs
[userId, time]
(times are integers; events may be in arbitrary order)
-
timeout
: a non-negative integer
For each user, sort that user’s events by time. Two consecutive events for the same user belong to the same session if their time difference is <= timeout. Otherwise, the later event starts a new session.
Task: Return the total number of sessions across all users.
Input: events = [[userId, time], ...], timeout
Output: integer (number of sessions)