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

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

Трям всем.

Сейчас импортировал результаты в тренировку. Пример:

...
@p E,Hamilton traversal 2,20,0
@p F,Sexless marriage agency,20,0
@p G,String generator 2,20,0
@p H,Equalize,20,0
...
@t 2,0,1,"[MIPT] Moscow IPT Ababahalamaha: Dmitriev, Ostanin, Babanin"
@t 32,0,1,"[MSHRC] GF-780: Sitnik, Kamotski, Khaikov"
@t 16,0,1,"[BSUIR] Citrus: Astashkevich, Tanasyuk, Berezhnov"
@t 29,0,1,"[BSU] Air Penguins: Sokol, Sheftelevich, Polievits"
...
@s 37,A,12,6290,WA
@s 32,A,10,6449,OK
@s 21,B,1,6486,TL
@s 36,F,1,6492,WA
@s 45,B,2,6549,TL
...

Интересно, что за ...,20,0 у задач и ...,0,1,... в описании команд? Можно ли автоматически генерировать такой лог в еджадже? Может такой лог умеет поддерживать описание решений участников? А почему для посылок не добавить номер теста, на которой произошла ошибка (или 0 в некоторых случая)?

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

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Этот же формат используется в Testsys (например, в петрозаводских сборах). 20 это я так понимаю штраф за неверную попытку. 0,1 — непонятно.

Я где-то за час написал парсилку ejudge -> testsys. Выкладывать не хочу, т.к. за код стыдно.

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

Цитирую:

      if State>READY_TO_START then
        for i := Low(Problems) to High(Problems) do
          if PS[i] then with Problems[i]^ do
            B.println ('@p %s,%s,%d,%d',
            [enc(ProblemId), enc(ProblemName), PenaltyForWA, PenaltyForUnsolved]);
      for i := Low(Teams) to High(Teams) do
        if TS[i] then with Teams[i]^ do
          B.println ('@t %s,%d,%d,%s',
           [enc(TeamId), (*TeamStartShift*)0, MonClass, enc(TeamName)]);
      for i := Low(FakeTeams) to High(FakeTeams) do
        if TS2[i] then with FakeTeams[i]^ do
          B.println ('@t %s,%d,%d,%s',
           [enc(TeamId), (*TeamStartShift*)0, MonClass, enc(TeamName)]);

То есть да, 20 — это штраф за попытку, а 0 — штраф за нерешённую задачу. Видимо, он зачем-то задумывался, но дальше поняли, что он не нужен, так как всего лишь добавляет константу к командам, для которых это важно (т.е. у которых одинаковое количество задач). UPD: KADR внизу напомнил, что это так, только если для всех задач штраф одинаковый.

TeamStartShift — это какие-то бесконечно древние нереализованные зачатки виртуальных контестов. Соответственно, какой это имеет физический смысл, точно сказать нельзя :)

MonClass — это класс команды (число от 0 до 15). Например, можно сделать классы команд "пишущие онсайт" и "пишущие opencup" и сделать два монитора, показывающие разные подмножества классов команд.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +16 Проголосовать: не нравится

    По поводу штрафа за нерешенную задачу — если он будет разным для разных задач, то какой-то смысл в нем будет. Видимо, изначально так и задумывалось.