# Prepare bài Bedao Contest **Tác giả**: lanhf ## Hướng dẫn chung - [Video record cách dùng polygon](https://drive.google.com/file/d/1VKVPcTY8L2VMP-ocPOgy7HoBkFRvTqnL/view?usp=drive_link) - 2:00: Tạo bài, chuẩn bị các thông tin chung của bài - 2:45: Viết statement - 18:30: Viết validator - 36:15: Viết generator - [Blog hướng dẫn cách viết validator](https://codeforces.com/blog/entry/18426) - [Blog hướng dẫn cách viết generator](https://codeforces.com/blog/entry/18291) - [Blog hướng dẫn cách viết checker](https://codeforces.com/blog/entry/18431) - [Blog hướng dẫn cách viết interactor](https://codeforces.com/blog/entry/18455) ## Checker, validator, và interactor - Sử dụng $\texttt{testlib.h}$. - Tránh sử dụng $\texttt{define}$ nếu không quá cần thiết. - Viết code dễ đọc, dễ hiểu. - Nên sử dụng tool để format code. ## Validator - Thêm validator tests để kiểm tra. - Validate từng subtask. ## Checker - Sử dụng checker có sẵn nếu khả thi. - Sử dụng $\texttt{std::yesno.cpp}$ cho các bài dạng "YES/NO". - Không validate input trong checker (việc này để trong validator). - Luôn validate đáp của cả thí sinh và code mẫu theo cách giống nhau (đọc thêm ở blog về checker). - Không spoil thuật toán trong checker. - Comment của checker cần đủ nghĩa và dễ hiểu. ## Statement - Mỗi từ trong tên bài phải viết hoa chữ cái đầu. - Trong phần input, thêm giới hạn của một giá trị vào trong dấu ngoặc ngay sau khi liệt kê nó. Dấu ngoặc không được để nằm giữa dấu $ của công thức LaTex. Ví dụ: $$\texttt{\$n\$ (\$1\le n \le 10^5\$)} $$ - Liệt kê hết các giá trị trước khi thêm giới hạn Sai: $$\texttt{hai số nguyên \$n\$ (\$1 \le n \le 100\$) và \$m\$ (\$1 \le m \le 100\$).} $$ Đúng: $$\texttt{hai số nguyên \$n\$ và \$m\$ (\$1 \le n, m \le 100\$).} $$ - Từ, dấu cách, dấu câu không để nằm trong công thức Tex. - Tất cả giá trị, biến và hằng số quan trọng phải để nằm trong công thức Tex. - Để định nghĩa dãy số, sử dụng một trong hai cách: $$\texttt{Một dãy \$x\$ gồm \$n\$ phần tử}$$ $$\texttt{Một dãy \$x_1, x_2, \ldots, x_n\$}$$ - Để viết dấu gạch ngang dài (dash), viết $\texttt{---}$ (ba dấu trừ liên tiếp). - Dùng $\texttt{\cdot}$ cho phép nhân. - Dùng $\texttt{\bmod}$ cho phép modulo. - Dùng $\texttt{\equiv}$ và $\texttt{\pmod}$ để thể hiện quan hệ đồng dư. $$\texttt{\$a \equiv b \pmod{c}\$}$$ - Sử dụng format subtask sau: ``` \begin{tabular}{c|c|l} \textbf{Subtask} & \textbf{Điểm} & \textbf{Giới hạn} \\ \hline 1 & $20$ & $n \le 20$ \\ \hline 2 & $30$ & $n \le 50$ \\ \hline 3 & $50$ & Không có ràng buộc gì thêm \\ \end{tabular} ``` ## Points ## Về việc chia subtask