P13849 [CERC 2023] Equal Schedules
Description
You are one of the people on-call for a high-availability service that offers users to solve programming tasks. As an organized team, you have an on-call schedule specifying who is responsible for the service at which time. A colleague sends you a new schedule, and you want to make sure that everyone has the same amount of on-call time as before, or print any differences.
The on-call schedule is specified with lines of form $s_i \ e_i \ t_i$, where $s_i$ and $e_i$ represent the start and end offsets of the on-call shift for a teammate $t_i$ from some start hour.
Given a sample schedule
```
0 7 jan
7 14 tomaz
14 20 jure
20 24 jan
24 25 tomaz
25 26 jure
```
we can see that jan is on-call for the first $7$ hours (hour $0, 1, 2, 3, 4, 5$, and $6$), tomaz for next $7$, … In total, jan is on-call for $11$ hours, tomaz for $8$ and jure for $7$.
Input Format
The input contains two schedules separated by a horizontal line `------`. Each schedule contains one or more lines of form $s_i \ e_i \ t_i$, where integers $s_i$ and $e_i$ specify that teammate $t_i$ is on-call for hours from $s_i$ up to and excluding $e_i$. A final line `======` is printed after the second schedule.
Output Format
Output the differences between two schedules, in form $t_i \ \pm d_i$, where $d_i$ is the difference between the second and the first schedule for the teammate $t_i$. The output should be sorted alphabetically by teammates' names and teammates with no differences should be omitted, otherwise the difference should be printed with a + or a - sign. If no differences are found, print `No differences found.` (without the quotes).
Explanation/Hint
### Input limits
For each schedule, the following holds:
- $s_1 = 0$
- $s_i < e_i$
- $s_{i+1} = e_i$
- $e_i \leq 1000$
- Name $t_i$ will consist of lowercase letters from the English alphabet.
- $3 \leq |t_i| \leq 20$