Every day done on the same day:
Times:
Part 1: Brute Force
Part 2: Calculation + Brute Force
Part 1: Prefilter + "smart" Brute Force
Part 2: "smart" Brute Force
Part 1: Sliding Window + Brute Force
Part 2: Sliding Window + Brute Force
Part 1: Brute Force
Part 2: Brute Force
Part 1: Calculation
Part 2: Binary Tree for comfortable deduplication of ID ranges and recursive traversal for calculation
Part 1: Calculation
Part 2: Ahhh yes... Cephalopod math
Part 1: N² (not that bad -> only 3 columns and max all rows have to be checked for each splitter) Search from every splitter bottom to top until it is clear if it is reachable by a beam or not + Calculation
Part 2: Recursive calculation, basically DFS + Memoization
Part 1: Forgot about Union Find and implemented something similar but bit more inefficient
Part 2: same as Part 1 but with more iterations
Part 1: Brute Force (calculation of every possible area and selection of largest one)
Part 2: Ray Casting to check if all 4 corners are in the Polygon and checking if they are inside of an allowed area (didn't want to code the check for intersections of the vectors between the vertices, so I used a lil trick)
Part 1: BFS + XOR logic
Part 2: Solving ILP without 3rd Party Library -> Gaussian Elimination + Null Space + Brute Force over search range to find free variables that minimize the number of button pushes
Part 1: Brute Force
Part 2: DFS + Memoization + Calculation
Part 1: Hmmm... yeah wasn't that hard as I thought it would be -> just calculation for each area
Part 2: Aaaaand that's it for this year \(^.^)/