Editorial for DMOPC '18 Contest 5 P5 - A Hat Problem
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Each person has two choices, so there are possibilities. Trying each of these
possibilities passes in time for subtask 1.
Time Complexity:
For the second subtask, let be the least unhappiness if person
leaves without trading the next person. Say that they leave with the hat originally from person
. For that hat to have travelled all the way there, person
must have not traded with the next person and everyone from
to
must have. It is then easy to see that in this case,
The sum can be computed in
with a prefix sum array.
Time Complexity:
For the final subtask, we analyze the from above. Splitting the absolute value into two cases yields the following:
Note that each sum can be split into a component that depends only on , and a component that depends only on
. So we create two segment trees storing the component depending on
. More precisely, we update each segment tree at index
with value
and
. Then we can query the two segment trees to compute each
value.
Time Complexity:
Comments