There are 5 questions, each of which is answered correctly by 6 students. That makes 30 correct answers in total.
With three correct answers required in order to pass, this means that the maximum number of passing students is (30/3 ==) 10.
Edit, with an example table of which students get which question correct:
Each row is one of the 12 students. Each column is one of the five questions. The
X marks which questions each student got right.
1 2 3 4 5
1 X X X
2 X X X
3 X X X
4 X X X
5 X X X
6 X X X
7 X X X
8 X X X
9 X X X
10 X X X
Note that each of the five questions is answered correctly six times (has six
Xs in its column). Students 1-10 each answer three questions correctly (three
Xs in their row), and therefore pass. Students 11-12 answer zero questions correctly, and therefore fail.
Thus, ten students pass, two fail.
This mapping of students to the answers they got correct obviously isn't the only way to make a mapping with ten students passing; it's pretty trivial to just naively fill in this sort of table in a bunch of different ways, and then move the correct answers around to make it obey the "three correct answers per students, six students per answer" constraints. I threw this one together in about thirty seconds; a lot more time went into formatting it for the post, than into constructing it.
I found that filling out this table feels a lot like solving a vastly simplified Eight Queens problem. When I was asked to provide the table, I assumed that I had missed some tricky gotcha of the question in my original, maths-based answer, and that I was going to have to rethink my whole approach after discovering what that gotcha was.. but.. nope! Doesn't seem to be any gotcha, here.