  Packing problems are an important class of optimization problems. The
probably most well-known problem if this type is knapsack and many
generalizations of it have been studied in the literature like Two-dimensional
Geometric Knapsack (2DKP) and Unsplittable Flow on a Path (UFP). For the latter
two problems, recently the first polynomial time approximation algorithms with
better approximation ratios than 2 were presented [G\'alvez et al., FOCS
2017][Grandoni et al., STOC 2018].
  In this paper we break the barrier of 2 for the Storage Allocation Problem
(SAP) which is a natural intermediate problem between 2DKP and UFP. We are
given a path with capacitated edges and a set of tasks where each task has a
start vertex, an end vertex, a size, and a profit. We seek to select the most
profitable set of tasks that we can draw as non-overlapping rectangles
underneath the capacity profile of the edges where the height of each rectangle
equals the size of the corresponding task.
  This problem is motivated by settings of allocation resources like memory,
bandwidths, etc. where each request needs a contiguous portion of the resource.
The best known polynomial time approximation algorithm for SAP has an
approximation ratio of 2+epsilon$ [M\"omke and Wiese, ICALP 2015] and no better
quasi-polynomial time algorithm is known. We present a polynomial time (63/32)
< 1.969-approximation algorithm for the case of uniform edge capacities and a
quasi-polynomial time (1.997)-approximation algorithm for non-uniform
quasi-polynomially bounded edge capacities. Finally, we show that under slight
resource augmentation we can obtain approximation ratios of 3/2 + epsilon in
polynomial time and 1 + epsilon in quasi-polynomial time, both for arbitrary
edge capacities.
