#import "utils.typ": * #let FCFS(tasks) = { let (processes, tasks) = _prepare-tasks(tasks) let cur-time = 0 for task in tasks { let proc = processes.at(task.id) if task.arrival < cur-time { proc.events.push((READY, task.arrival)) } let wait-time = calc.max(0, cur-time - task.arrival) proc.events.push((RUNNING, task.arrival + wait-time)) cur-time = task.arrival + task.duration + wait-time proc.events.push((TERMINATED, cur-time)) processes.at(task.id) = proc } return _prepare-output(processes) }