  We study the problem of allocating a set of indivisible goods among a set of
agents in a fair and efficient manner. An allocation is said to be fair if it
is envy-free up to one good (EF1), which means that each agent prefers its own
bundle over the bundle of any other agent up to the removal of one good. In
addition, an allocation is deemed efficient if it satisfies Pareto optimality
(PO). While each of these well-studied properties is easy to achieve
separately, achieving them together is far from obvious. Recently, Caragiannis
et al. (2016) established the surprising result that when agents have additive
valuations for the goods, there always exists an allocation that simultaneously
satisfies these two seemingly incompatible properties. Specifically, they
showed that an allocation that maximizes the Nash social welfare (NSW)
objective is both EF1 and PO. However, the problem of maximizing NSW is
NP-hard. As a result, this approach does not provide an efficient algorithm for
finding a fair and efficient allocation.
  In this paper, we bypass this barrier, and develop a pseudopolynomial time
algorithm for finding allocations that are EF1 and PO; in particular, when the
valuations are bounded, our algorithm finds such an allocation in polynomial
time. Furthermore, we establish a stronger existence result compared to
Caragiannis et al. (2016): For additive valuations, there always exists an
allocation that is EF1 and fractionally PO.
  Another contribution of our work is to show that our algorithm provides a
polynomial-time 1.45-approximation to the NSW objective. This improves upon the
best known approximation ratio for this problem (namely, the 2-approximation
algorithm of Cole et al. (2017)). Unlike many of the existing approaches, our
algorithm is completely combinatorial.
