I look at this pseudo-code for the Minimax algorithm:
Function Minimax-Decision(state) returns an action
;inputs: state (current game state)
;'E' means element of, 'a' is the action
return a E Actions(state) maximizing Min-Value(Result(a, state))
Function Max-Value(state) returns a utility value
if Terminal-Test(state) then return Utility(state)
v <-- -infinity
for a, s in Successors(state) do v <-- Max(v, Min-Value(s))
return v
Function Min-Value(state) returns a utility value
if Terminal-Test(state) then return Utility(state)
v <-- infinity
for a, s in Successors(state) do v <-- Min(v, Max-Values(s))
return v
I think I know how the Minimax algorithm works. You fill in the rating values from the bottom up, starting with the utility ratings. Max nodes have the largest of his children, Min will be the smallest. Max predicts that Min will always try to put Max in the worst position possible for the next turn, and using this knowledge, Max tries to make the best move.
So, for: with order Max, Min, Max on top 
1) Max wants to make the best move for himself (maximum utility), therefore C1 = 5, C2 = 11, C3 = 8, etc.
2) Max predicts that Min will want to put Max in the worst position (limit Max to the least utility), so B1 = 5, B2 = 2, B3 = 3
3) Max wants to make the best possible move, so A = B1 = 5
, v. - ?
, !