[guided]The construction has two competing goals. To make $A$ meet every infinite c.e. set, we want requirement $R_e$ to search inside $W_e$ and put one element into $A$. To keep $A$ coinfinite, we restrict the kind of element that $R_e$ may put in: it may enumerate only a number $x > 2e$, and it may do this at most once.
We define $A_1 := \varnothing$. At stage $s+1$, we begin with $B_{s+1,0} := A_s$ and process exactly the finitely many requirements $R_0,R_1,\dots,R_s$ in increasing order. For each $e \leq s$, the temporary finite set $B_{s+1,e}$ is the current approximation at the beginning of the turn for $R_e$. If $R_e$ has already placed a witness into $A$ at an earlier stage, then $R_e$ takes no further action and we set $B_{s+1,e+1} := B_{s+1,e}$.
If $R_e$ has not already acted, we search the finite set $W_{e,s}$ for an element
\begin{align*}
x \in W_{e,s} \setminus B_{s+1,e}
\end{align*}
satisfying $x > 2e$. The subtraction by $B_{s+1,e}$ prevents us from trying to enumerate an element already placed into the current approximation, and the inequality $x > 2e$ is the restraint that will later make the complement infinite. If eligible elements exist, we choose the least one, set
\begin{align*}
B_{s+1,e+1} := B_{s+1,e} \cup \{x\},
\end{align*}
and permanently declare $R_e$ satisfied. If no eligible element exists, we set $B_{s+1,e+1} := B_{s+1,e}$. After processing $R_0,R_1,\dots,R_s$, we define $A_{s+1} := B_{s+1,s+1}$.
The search is computable because $W_{e,s}$ and $B_{s+1,e}$ are finite and effectively given at stage $s+1$. The construction therefore gives a computable enumeration of the elements that enter $A$. Since a set is computably enumerable precisely when its elements can be listed by a computable stage procedure, the resulting set
\begin{align*}
A = \bigcup_{s=1}^{\infty} A_s
\end{align*}
is computably enumerable.[/guided]