The proof is by contradiction. Assume $f$ is not a polynomial.

Consider the following closed sets
$$
S_n = \{x: f^{(n)}(x) = 0\}. 
$$
and
$$
X = \{x: \forall (a,b)\ni x:\; f|_{(a,b)}\; is\; not\; a \;polynomial \}. 
$$

It is clear that $X$ is a non-empty closed set without isolated points. Applying Baire category theorem to the covering $\{X\cap S_n\}$ of $X$ we get that there exists an interval $(a,b)$ such that $(a,b)\cap X$ is non-empty and
$$
(a,b)\cap X\subset S_n
$$
for some $n$. Since every $x\in (a,b)\cap X$ is an accumulation point we also have that $x\in S_m$ for all $m\ge n$ and $x\in (a,b)\cap X$. 

Now consider any maximal interval $(c,e)\subset ((a,b)-X)$. Recall that $f$ is a polynomial of some degree $d$ on $(c,e)$. Therefore $f^{(d)}=const\neq 0$ on $[c,e]$. Hence $d< n$. (Since either $c$ or $e$ is in $X$.)

So we get that $f^{(n)}=0$ on $(a,b)$ which is in contradiction with $(a,b)\cap X$ being non-empty.