Integrate the zero-order interpolation of the data:
f[x_] = Integrate[Interpolation[dat, InterpolationOrder -> 0][x], x];
Plot[f[x], {x, 0, 110}, AspectRatio -> Automatic, GridLines -> {{18, 70, 90}, None}]
![enter image description here][1]
It can efficiently plot piecewise functions with thousands of transition points in milliseconds:
dat = {Accumulate@RandomReal[{0, 1}, 1000], RandomReal[{-1, 1}, 1000]}\[Transpose];
f[x_] = Integrate[Interpolation[dat, InterpolationOrder -> 0][x], x];
Timing@Plot[f[x], {x, dat[[1, 1]], dat[[-1, 1]]}]
![enter image description here][2]
[1]: https://i.sstatic.net/hZn8Y.png
[2]: https://i.sstatic.net/eSYo3.png
[3]: https://i.sstatic.net/hi6ii.png