# Approximation of a function part of the input of NMaximize

I need to maximize the following function (the input to NMaximize below)

    NMaximize[{((1/3) + f[p]*(1 - p)*(((1/(Sqrt[2]/2))*p)^2-1))/(1+(1-p)*     (((1/(Sqrt[2]/2))*p)^2 - 1)), p >= Sqrt[2]/2, p <= 1}, {p}] 

where $$f(\cdot)$$ is defined as follows

    f[p_?NumericQ] := NMinimize[{-((a + a^2 + b - 2 a b + b^2 + c - 2 a c - 2 b c + c^2)     /((-1 + a) (a + b + c))), 0 <= a, a <= b, b <= c, c <= 1, c <= a + b, (a + b + c)/3 <= p},      {a, b, c}, Method -> "DifferentialEvolution"][[1]] 

However, as expected, the computation does not end and there are several alert messages. For the underlying mathematical problem I am trying to solve, I could replace $$f(\cdot)$$ by a simple function $$g(\cdot)$$ that approximates it, but I need $$g(p)\le f(p)$$ for all $$p\in[0,1]$$. I tried to use InterpolatingPolynomial with a few values of $$f(\cdot)$$. However, $$f(\cdot)$$ is neigher concave nor convex in $$[0,1]$$, and I am struggling to obtain a good approximation of $$f(\cdot)$$ which satisfies the $$g(p)\le f(p)$$ in $$[0,1]$$.

Do you know how any method for generating such approximation function $$g(\cdot)$$ (or solving the maximization problem in a different way)?