For this, I'd suggest you to use the pgfplots
package and stacking plots:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\pgfmathdeclarefunction{poly}{0}{%
\pgfmathparse{-x^3+5*(x^2)-3*x-3}%
}
\begin{tikzpicture}
\begin{axis}[
domain=-1.2:4.2,
ymin=-5,
ymax=10,
samples=160,
stack plots=y
]
% draw graph for the first function f
\addplot+[black,thick,mark=none] {poly};
% draw graph of max(g-f, 0) and stack
\addplot+[mark=none,fill=gray!60,draw=cyan] {max(3-(poly),0)} \closedcycle;
% draw graph of min(g-f, 0) and stack
\addplot+[mark=none,fill=orange!70,draw=cyan] {min(3-(poly),0)} \closedcycle;
\end{axis}
\end{tikzpicture}
\end{document}

And with the help lines and labels:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\pgfmathdeclarefunction{poly}{0}{%
\pgfmathparse{-x^3+5*(x^2)-3*x-3}%
}
\begin{tikzpicture}
\begin{axis}[
xmin=-2,
xmax=5,
ymin=-5,
ymax=10,
axis y line=left,
axis x line=bottom,
xtick={-1.2,2,4.2},
xticklabels={$a$,$\zeta$,$b$},
ytick={3},
yticklabels={$f(\zeta)$},
samples=160
]
\addplot[mark=none,help lines,domain=-2:4.2] {3};
% draw graph for the first function f
\addplot+[black,thick,mark=none,domain=-1.2:4.2,stack plots=y] {poly};
% draw graph of max(g-f, 0) and stack
\addplot+[mark=none,fill=gray!60,draw=cyan,domain=-1.2:4.2,stack plots=y] {max(3-(poly),0)} \closedcycle;
% draw graph of min(g-f, 0) and stack
\addplot+[mark=none,fill=orange!70,draw=cyan,domain=-1.2:4.2,stack plots=y] {min(3-(poly),0)} \closedcycle;
\draw[help lines] (axis cs:-1.2,-5) -- (axis cs:-1.2,3);
\draw[help lines] (axis cs:2,-5) -- (axis cs:2,3);
\draw[help lines] (axis cs:4.2,-5) -- (axis cs:4.2,3);
\end{axis}
\end{tikzpicture}
\end{document}
