The correct answer is C, but why? I'll tell you :)
In French, certain expressions trigger the subjunctive mood. Like verbs expressing doubt, possibility, denial, or negative opinion (douter que, il est possible que, ne pas croire que, ne pas penser que…).
Let's take another look at the answers one by one:
A) Je doute qu’il vient hier.
What is wrong here? Two things:
- First, Douter que triggers the subjunctive.
- Second, since the action happened in the past (hier), the past subjunctive is required.
So "Vient" (present indicative) is doubly wrong here.
"Je doute qu'il soit venu hier" would have been correct.
B) Je ne crois pas qu’elle vienne à la soirée d’hier.
The subjunctive is correct after ne pas croire que, but vienne (present subjunctive) doesn't match the past time marker d'hier. You need to switch to the past subjunctive "soit venue."
Correct grammar: "Je ne crois pas qu'elle soit venue à la soirée d'hier."
C) Il est possible qu’ils soient partis avant nous hier soir.
This one is correct :)
D) Nous pensons qu’il soit en retard la semaine dernière.
This one is tricky, I admit. And it's normal to get it wrong or be confused by this exception. When you affirm something using "je pense que", you are certain. There is no doubt here, so no subjunctive.
However, if you were not certain about what you are about to say, you could still say "Je ne pense pas que..." But then, it will take the subjunctive.
Now, since the context is past (la semaine dernière), you need to use the imparfait était.
The correct sentence would be: "Nous pensons qu'il était en retard la semaine dernière."
Now a native touch:
It's not really usual to use the verb penser that way. It's like someone is asking a group a weird question such as "Pensez-vous qu'il était en retard la semaine dernière?", "Oui. nous pensons qu'il était en retard la semaine dernière." Just weird. Most people will simply say "Il était en retard la semaine dernière." So this is something that might come up in a grammar test, but not really in a real life conversation.