Блог пользователя khusrav_cpp

Автор khusrav_cpp, история, 11 лет назад, По-русски

Когда писал последний контест увидел что у меня в комнате был пацан с решением за квадрат, когда нужно было за N*logN. Тогда решил взломать его создал текстовый файл с макс тестом, попытался взломать и столкнулся с проблемой, что файл слишком большой. Тогда попытался сгенерировать этот же тест. Но при взломе после выбора языка нужно было указать настройки компилятора или что-то такое, что я не смог заполнить и поэтому не смог взломать. Подскажите что вообще нужно ввести, чтобы сгенерировать тест для взлома.

  • Проголосовать: нравится
  • +19
  • Проголосовать: не нравится

»
11 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +11 Проголосовать: не нравится

Надо указать компилятор и исходник генератора. Генератор должен просто выводить тест в stdout, при этом без рандома зависящего от времени. Можно инициализировать рандом от параметров командной строки, которые тоже можно указать в настройках взлома (а можно и не указывать). Еще при написании генератора надо обратить внимание на то, что в конце строк нельзя выводить лишние пробелы, иначе будет считаться, что тест некорректен (на счет того что будет считаться некорректным не уверен, хотя это за минус-взлом не считается, поэтому можно не особо париться и проверять). Обычно я писал что-то в духе этого (просто как пример, к задаче не относится):

#include ...
using ...;

int main() {
    int n = 100000;
    cout << n << "\n";
    cout << "1";
    for (int i = 1; i < n; ++i) {
        cout << " 1";
    }
    cout << "\n";
}

Я обычно выбирал GNU C++11, выбирал исходник, а остальное не заполнял. В параметры в принципе можно N загнать или тип теста или числа которые будут выводиться, но я этого не делал.