diff --git a/mo/score.py b/mo/score.py
index 92ae5044de9d71f32e5798efb62f7596beeb197d..29f112cbe628c769f065928c41c3324767a7179c 100644
--- a/mo/score.py
+++ b/mo/score.py
@@ -7,7 +7,7 @@ from typing import Any, List, Tuple, Optional, Dict, Union
 
 import mo.db as db
 from mo.util import normalize_grade
-from mo.util_format import inflect_with_number
+from mo.util_format import inflect_number, inflect_with_number
 
 
 class ScoreOrder:
@@ -149,6 +149,23 @@ class Score:
         self._load_tasks_and_sols(0, round, contest_subq)
         self._mark_winners()
 
+        # Kontrola řešení
+        missing_points = {task_id: 0 for task_id in self._tasks[0].keys()}
+        missing_feedbacks = {task_id: 0 for task_id in self._tasks[0].keys()}
+        total_counts = {task_id: 0 for task_id in self._tasks[0].keys()}
+        for result in self._results.values():
+            for sol in result._sols[0].values():
+                total_counts[sol.task_id] += 1
+                if sol.points is None:
+                    missing_points[sol.task_id] += 1
+                if sol.final_feedback is None:
+                    missing_feedbacks[sol.task_id] += 1
+        for t in self.get_tasks():
+            if missing_points[t.task_id] > 0:
+                self._add_message("error", f"{t.code} – schází zadané body u {missing_points[t.task_id]} řešení z {total_counts[t.task_id]}")
+            if missing_feedbacks[t.task_id] > 0:
+                self._add_message("warning", f"{t.code} – schází nahraná oprava u {missing_feedbacks[t.task_id]} řešení z {total_counts[t.task_id]}")
+
         # Vynecháme účastníky, kteří nic neodevzdali
         to_remove = []
         for user_id, results in self._results.items():