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

Автор AlexSkidanov, 15 лет назад, По-русски
Считаю подлым:
а) erase 0 в задаче B в тесте 42 :о)
б) пробелы до и после # в задаче E в тесте 139. AC по ней через 28 секунд после конца контеста/начала дорешивания :о) на контесте правильное решение отправил наверное через секунду после конца :о(


UPD: Если кому-то интересно, WA19 в задаче E обозначает что вы не учитываете случай, когда перед вызовом макроса стоит -, а внутри макроса плюсы или минусы. Это не ОК :о)
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

15 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Да, erase 0 зло(((
15 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Согласен) Заколебался исправлять этот баг)
15 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Я там упал на erase -1 :)
Видимо весь тест состоял из таких вот небольших констант...
15 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Еще  неприятен был TL12 в D если писать ее на строках(string) а не на char*. Я не понимаю если честно смысл делать чтобы одно проходило а другое нет.
  • 15 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    У меня тоже долго было TLE, но оказалось достаточно читать через gets(), а потом можно и string использовать. Работает за 830мс, компилятор g++.


    По задаче C не понял, в чём была особенность с erase 0/-1. Использовал std::map для поиска по id.


    • 15 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      там есть решение попроще, где просто в массиве длины m области красятся в нужный цвет. В нем гораздо проще делать дефрагментацию
  • 15 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Это же смотря что называть "на строках"
    Может там вы в цикле деаете s += ch :о)

    Если бы была такая проблема (char* проходит, string нет), было бы странно, почему код на Java и C# вообще проходит :о)
    • 15 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      На строках имелся ввиду на iostream на самом деле. iostream, кстати, тоже можно заставить работать сравнительно быстро, если рассинхронизировать его с чтением через stdio - не помню сейчас функции, которую вызвать надо
15 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Задача С оказалась для меня самой подлой. Я забыл про то, что в с++ деление нацело и взятие остатка у отрицательного цисла работает некорректно. На дорешивании выяснилось, что это была единственная бага..=(
15 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Про erase 0 / erase -1 - это и была основная реализационная хитрость в этой задаче :)

А про пробелы в E в условии сказано дважды ;) И это стандартное поведение C++.

  • 15 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    бррр, в чем прикол этих erase 0 / erase -1 ? Как это могло вообще повлиять на решение?