Erlang Passing Cars
-module(passing_cars).
-export([passing_cars/1]).

passing_cars(A) ->
    {Result, _Multiply} = lists:foldl(fun(I, {Passing, Multiply}) ->
        case I of
            0 -> {Passing, Multiply + 1};
            _ when Multiply > 0 -> {Passing + Multiply, Multiply};
            _ -> {Passing, Multiply}
        end
    end, {0, 0}, A),
    case Result > 1000000000 of
        true -> -1;
        false -> Result
    end.

This counts eastbound cars as it scans, then adds them whenever a westbound car appears.