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$