Доброго времени суток.
Важной частью процесса подготовки задачи является написание валидатора — специальной программы, которая проверяет, что каждый тест в точности соответствует всем описанным в условии ограничениям. Проблема написания валидатора сравнима с проблемой написания чекера: при написании их с нуля возникает куча сложностей о которых уже писал MikeMirzayanov.
Однако чекер и валидатор выполняют разные функции, и использовать одну библиотеку для написания обеих программ не всегда удобно. Поэтому представляю вашему вниманию библиотеку strict.h — библиотеку, специализированную на валидаторах. Последнюю версию можно скачать по адресу http://acm.timus.ru/stricth/.
Во многих задачах формат входных данных имеет более-менее стандартный вид. Для таких задач хочется, чтобы валидатор был предельно прост, но, с другой стороны, он должен оставаться валидатором и строго проверять корректность тестов.
Всё это позволяет делать библиотека strict.h, которая уже используется при подготовке уральских контестов, а также на Тимусе.
Пример валидатора
Валидатор для задачи 1393. Average Common Prefix с Тимуса:
#include "strict.h"
using namespace std;
const int MAXLEN = 250000;
const int MINLEN = 2;
int main()
{
Input in;
int n = in.readInt(MINLEN, MAXLEN);
in.readEoln();
in.readToken(n, n, "A-Z");
in.readEoln();
in.readEof();
return 0;
}