1from dataclasses import dataclass
2
3@dataclass
4class StackEntry:
5 end: int
6 duration: int
7
8@dataclass
9class Op:
10 id: int
11 op: str
12 time: int
13
14class Solution:
15 def exclusiveTime(self, n, logs):
16 res, stack = [0] * n, []
17 for task in map(lambda x: Op(int(x[0]), x[1], int(x[2])), (x.split(":") for x in logs)):
18 if task.op == "start":
19 stack.append(StackEntry(end=task.time, duration=0))
20 elif task.op == "end":
21 prev_op = stack.pop()
22 op_duration = task.time - prev_op.end + 1
23 res[task.id] += op_duration - prev_op.duration
24 if stack:
25 stack[-1].duration += op_duration
26 return res
27
28
29print(Solution().exclusiveTime(3, ["0:start:0", "1:start:2", "2:start:3", "2:end:4", "1:end:5", "0:end:6"]))