Chat:Ru/2020-10-12
Uljahn: нулевой чекпоинт как правило ровно посередине между подами в начале гонки, потом сохраняешь новые координаты, которых ещё не было, в какой-нибудь список/массив/словарь/etc., как увидишь снова нулевой чек — значит, второй круг
magaiti: я помню как впервые узнал про массивы
magaiti: и запрогал клон soko-ban на бейсике на ДВК
magaiti: на уроках информатики
magaiti: я даже не догадывался что есть что-то эффективнее сортировки пузырьком
**gsomix сел у костра, чтобы послушать рассказы дедушки.
magaiti: да я уж закончил
magaiti: кыш работать
amurushkin: костер потушить забыли :)
magaiti: как твой 2048,
magaiti: ?
magaiti: я так понял там тупо ищешь все решения на какую-то глубину,и берешь N лучших, и повторяешь
magaiti: начал немного кодить
magaiti: https://www.codingame.com/replay/492491856
magaiti: хз что за ритуальные танцы
amurushkin: magaiti: да вот больше 8 лямов пока не смог
magaiti: в 600 ходов упираешься?
amurushkin: мне кажется что нужна какая то оценочная а не просто счет. хотя у других вроде получается
amurushkin: нет сейчас в 600 не упираюсь. просто оно проигрывает
amurushkin: вывожу сразу по 20 ходов. если делать меньше то способно пройти дальше но тогда упираюсь в 600 ходов
magaiti: ну чем больше счет, тем больше свободного места должно быть
magaiti: можно еще как-то упорядоченность учитывать
magaiti: что самый большой номер в углу
amurushkin: ну да у меня есть оценка с учетом свободных клеток
amurushkin: вот тоже пришла мысль как то это учесть чтобы номер в угол пихать. пока не попробовал
wlesavo: amurushkin так у тебя не змейка оценочная чтоли? тогда ясно почему 8 лямов всего
amurushkin: пока еще на векторах у меня
amurushkin: wlesavo: что за змейка?
magaiti: цепочка чисел
wlesavo: суммирование всех цифр по змейке с дискаунтом
wlesavo: счет можно вообще не учитывать он не нформативный особо
magaiti: что за дискаунт?
amurushkin: нет у меня скор плюс количество свободных клеток с хитрым коэффициентом зависящим от скора
wlesavo: ну каждый следуюющий *0.9
magaiti: аа
amurushkin: у меня как бы не то чтобы счет а разница сколько он набрал от начала поиска
magaiti: ну все щас порвем борду
amurushkin: wlesavo: у тебя змейка по спирали?
wlesavo: нет, по рядам
amurushkin: а спираль пробовал?
wlesavo: ну это у всех так, просто если играл в 2048 это единственный способ играть по сути, спираль хз зачем, у тебя же не получится в угол загнать самый большой тогда
magaiti: да вроде можно вниз вообще не ходить, и змейку сверху считать
wlesavo: ну я так и делаю, отрезать действие вниз дало буст + 10 лямов
amurushkin: я не играл поэтому для меня это не очевидные вещи
wlesavo: а, ну тогда да
wlesavo: вчера даже в общаке обсуждали, независимо друг от друга у всех одинаковая оценочная кто играл
amurushkin: у меня полюбому такая какой ниукого нет ))
wlesavo: ну это да
wlesavo: а тут просто и эффективно получается
amurushkin: во спасибо за подсказку. теперь даже в лимит упирается
magaiti: змейку от угла считать, или неважно?
magaiti: ну разберемся там
wlesavo: от угла
magaiti: мм, спасибо
wlesavo: самое большое в углу должно быть ж
magaiti: то есть другие варианты заведемо проигрышные
wlesavo: ну я думаю можно что-то добавить в оценку, но из того что я пробовал ничего не улучшало
magaiti: ну от угла змейку можно по горизонтали и вертикали считать
magaiti: но тогда надо 4 хода
amurushkin: а дисконт у тебя как 0,9 0,8 и так далее или каждое следующее на 0,9 умножаешь?
magaiti: я думаю в ячейке можно хранить степень двойки, так доска меньше места будет занимать
magaiti: 0 - пустая, 1 - 2 итд
magaiti: 16 байт хватит на доску
amurushkin: а надо ли?
magaiti: ну хз
magaiti: может быстродействие быстрее
wlesavo: каждое следующее на 0.9^i
amurushkin: барабанная дробь :)
wlesavo: ну или там другой коэффициент даже
amurushkin: сейчас гляну сколько наберу без изменений глубины и остального
amurushkin: 13380748 только 1 затаймил
wlesavo: во, норм, еще с глубиной поиграть и 17 легко будет
wlesavo: дальше думать надо
magaiti: оптимизировать не помогает?
wlesavo: я не понял почему но мой брут форс не ускорился совсем когда я перестал заходить в плохие цепочки ходов, дома в дебагере проверю, мож не так что сделал, но вроде все так и скор правильный, а прироста 0
magaiti: может мало плохих цепочек просто
magaiti: 2%
amurushkin: у меня когда глубина больше 27 начинает выдавать невалидные ходы. забавно
magaiti: где-то косяк у тебя значит
magaiti: глубина 27 это как? 3 спуска по 9?
magaiti: прям все рассказали
amurushkin: это значит что за 1 ход максимум столько вывожу.но на практике он не всегда дотягивает до такой глубины
magaiti: может у тебя инты в борде переполняются?
amurushkin: чаще всего в половину
amurushkin: кстати это идея. надо попробовать на лонг действительно
magaiti: хотя 17 лямов не должно еще
amurushkin: 17 лямов это сумма за все тесты
magaiti: ну да, но в инт 2 миллиарда влезает
magaiti: хм, а может в рефери баг когда больше 27 выводишь?
amurushkin: да не там на самом деле я вывожу меньше. это или совпадения или это влияет как то на мой алгоритм
amurushkin: а так то на 1 ходу около 400 выводится и норм
magaiti: а там можно как-то абузить что на 1-й ход секунда дается?
amurushkin: конечно
magaiti: нагенерить на 20 ходов вперед
wlesavo: magaiti рефери до 10к символов норм отрабавтывает, дальше крашится
amurushkin: я на 1 ходу 400 ходов вывожу
wlesavo: ну не крашится, но таймит
wlesavo: но инт чтобы переполнился не знаю что надо сделать, миллион очков на борду это всеголишь 65к макс число
amurushkin: я никак не поймаю чтобы 100% было ))
wlesavo: тогда надо ловить баг а не сабмит))
amurushkin: так то все норм в ide
magaiti: невалидные ходы - это не норм
wlesavo: то что на глубине 27 невалидные сыпятся это симптом уже хороший
amurushkin: для сида long long же должно хватать?
wlesavo: да
amurushkin: в иде все теже тесты норм играют. а при сабмите рандомно какой то падает
magaiti: seed = seed * seed % 50515093L;
magaiti: по идее и инта хватит
wlesavo: не, инт переполняется
magaiti: а
magaiti: модуль
wlesavo: там сначала умножение делается в инт
magaiti: модуль ломается пр ипереполнении
magaiti: ясно
magaiti: хз, если на плюсах, лучше нормальные человеческие типы исппользовать. int64_t, uint64_t
magaiti: long long это для сишников
magaiti: как англоязычные товарищи код читают, интересно
magaiti: длинное-предлинное беззнаковое целое
magaiti: зерно
amurushkin: но разницы то нет по идее?
magaiti: ну типа как у них мозг не взрывается на родном языке кодит
magaiti: ь
magaiti: загугли 1С код
magaiti: https://1c-bezproblem.ru/images/Blog/download/ColorCode1c/colorCode.jpg
magaiti: бррр
Uljahn: ещё пролог есть)
magaiti: а пролог то чего
amurushkin: в этом плане да. я еще с паскаля понял что им тяжело
amurushkin: наконец то 100% поймал и с хорошим счетом 17396376
amurushkin: и это упирается в лимит ходов. есть еще куда развернуться
magaiti: ты в том плане что begin в 5 раз длиннее чем фигурная скобка?
magaiti: КонецПроцедуры
amurushkin: ну да так то там тоже по сути как в 1с для англичан
magaiti: 17 лямов, как предсказано
amurushkin: ага видать с правильной оценочной не так уж и сложно сюда попасть
amurushkin: уменьшил еще ширину луча
amurushkin: и на векторах даже
magaiti: https://www-users.cs.york.ac.uk/susan/joke/foot.htm
magaiti: вектора вроде в цг раза в 3 медленнее чем нативные массивы
magaiti: но это неточно
amurushkin: я почему решил попробовать. увидел что ромка юзал и 1 место занял в контесте. решил что не так уж и плохо по идее. первый раз вообще вектора юзаю
magaiti: лол
magaiti: а раньше что юзал
magaiti: я всегда с них начинаю
magaiti: потом можно оптимизировать
amurushkin: я массивы юзал раньше сразу. выяснил откуда невалидные ходы. иногда создается ситуация когда только вниз можно походить. а я этот ход убрал из списка
wlesavo: у меня вектора ассоциируются с питоновскими списками, и пожтому как-то сразу хочется их избегать
magaiti: вектора это те же массивы, просто со встроенным счетчиком размера
magaiti: но из-за того что цг компилирует с ключом -g они не оптимизируются как надо
amurushkin: вот я раньше так и юзал массив и счетчик количества в нем
magaiti: небось еще релоцировал вручную?
magaiti: хотя обычно максимальный размер известен заранее
amurushkin: нет массив не релоцировал. брал побольше
amurushkin: подскажи по векторам. pool.erase(pool.begin(),pool.begin()+curpoolsize); или pool.erase(pool.begin(),pool.begin()+curpoolsize - 1);
amurushkin: как правильнее удалить первые curpoolsize элементов. -1 надо или нет
magaiti: второй индекс всегда за конец интервала
magaiti: -1 не надо
magaiti: reserve() испольуешь?
magaiti: чтоб макс. размер сразу увеличить до нужного
magaiti: чтоб избежать релокаций
amurushkin: использую правда не знаю потом когда я делаю resize он уменьшает выделенную память или нет
magaiti: нет
magaiti: под это отдельный метод есть, но он только быстродействие понизит, если памяти хватает
magaiti: shrink_to_fit()
amurushkin: я просто боюсь чтобы без -1 он не удалил следующий который мне нужен. :)
magaiti: интервал в STL всегда так указывается
magaiti: на первый и следующий за последним
magaiti: так арифметика упрощается
magaiti: не надо -1 делать
magaiti: а зачем ты начало массива вырезаешь?
magaiti: это неэффективно
amurushkin: мне надо убрать отработанные позиции и оставить производные от них
magaiti: может лучше производные сразу в другой массив пихать?
magaiti: потом посвапать
magaiti: массивы
magaiti: swap(pool,newPool)
magaiti: там в головах вектора указатель на тело свапается, это быстро
magaiti: или pool = std::move(newPool)
amurushkin: надо попробовать. он так долго удаляет да?
magaiti: если удалять с конца массива, то это просто resize, иначе все элементы что за удаляемым интервалом, придется перемещать
amurushkin: с одним сидом сейчас пытаюсь баг найти. после 20230 хода стоит позиция в которой есть валидный ход но у меня пул решений пустой
magaiti: то есть если у тебя 1000 размер, и ты удалил 10 вначале, то 990 придется смещать на 10
magaiti: позицию выяснил?
amurushkin: ага попробую в новый писать. clear по идее быстро же?
amurushkin: да позицию то я вижу на экране
magaiti: clear это resize(0) по идее
magaiti: но он обычно не нужен
magaiti: если у тебя у элементов массива есть деструктор, то небыстро, но быстрых вариантов с деструктором нет
amurushkin: ну мне чтобы не создавать все время вектор нужно будет 2 имет и один очищать
magaiti: ну тогда да
amurushkin: забавная фигня у меня. он несколько сотен ходов играет с pool.size() 0
magaiti: как так
magaiti: откуда ходы берет:
magaiti: из воздуха?
amurushkin: складывается ощущение что erase не прибивает а просто счетчик меняет а там у меня из нулевого элемента решение берет и играет им
magaiti: ну вот и косяк
amurushkin: но играет долго пока видать не наткнется когда его реально уже нет
magaiti: я так и думал что ты где-то берешь перваый элемент в пустом массиве
amurushkin: кстати добавлять в вектор как лучше? я pool.emplace_back(newgs); юзаю
magaiti: чтоб этот баг ловить, испольуй метод at() вместо квадратных скобок
magaiti: он бросает если за границами пытаешься брать
amurushkin: может всетаки erase -1 надо?
magaiti: нет
amurushkin: с -1 всегда одно есть в пуле :)
magaiti: я вообще в шоке что человек из топ-10 гонок такие проблемы испытывает с векторами
amurushkin: да я же плюсы учить начал на CG только ))
magaiti: но это не то решение, которое ты ищешь?
amurushkin: и вектора не юзал еще ниразу
amurushkin: оно возможно просто не самое лучшее. так хуже играет ))
amurushkin: сука какие то чудеса
magaiti: если пул пустой, значит не все решения нахдишь
magaiti: или там правда все игры кончаются
amurushkin: там может быть конец игры я текущую глубину убил а дальше нет. думаю в этом дело
magaiti: ну из пустого набора можно глубоко бим серчем искать
magaiti: быстро, эффективно
magaiti: нужно бим серч с возвратом делать
magaiti: но тогда придется хранить больше решений
amurushkin: забавно что с этим багом набирает в 3 раза больше очков но таймит на 20к+ ходах
magaiti: странно, что он вообще может счет улучшить
amurushkin: та да
amurushkin: хотя может и не странно. смотри что получается
amurushkin: когда с багом он берет первый. и они отсортированы были. т.е вроде как и лучший. а когда я смотрю что будет пустой и оставляю пул. сортирую его опять и там наверное подмешивается первее решение которое дальше на глубине хуже
magaiti: а как он может быть лучший?
magaiti: почему ты удалил лучшее решение?
amurushkin: да так и есть. сделал не сортировать в этом случае и идет дальше
amurushkin: ну у нас же горизонт событий. оценка то не в конце партии. получается что промежуточно оценка лучше может быть и не у самого лучшего решения. алгоритм то жадный
magaiti: но как-то ты должен обрезать ширину дерева
magaiti: по эвристике
magaiti: N лучших
magaiti: каждые К ходов. или у тебя не так?
magaiti: у тея в одном массиве могут быть решения с разным числом ходов?
magaiti: ну если считаешь что это твое ноу-хау, можешь не рассказывать)
amurushkin: да так. обрезаю ширину
magaiti: а 0 как получается?
magaiti: единственный вариант это если все поля заполнились
magaiti: как он после этого играет то
amurushkin: там просто смотри что выходит. я у стейта храню не все ходы. а N первых которые вывожу потом. получается что где то там дальше у меня может быть K стейтов у которых кончились ходы. и не факт что их конечная оценка это лучшее решение среди этих первых N ходов
amurushkin: и без сортировки как я понимаю я просто откатываю на шаг назад и беру лучшее там
amurushkin: как минимум на одном сиде это дает в 3 раза больше счет
magaiti: ну тогда я не понимаю, что значит "без сортировки"
magaiti: оценочную же ты как-то используешь
amurushkin: оставшийся пул который я не удаляю потому что новый не порождается не сортирую. в остальных случаях перед выбором лучшего сначала сортируется
wlesavo: кстати ощущение такое что глубина не очень нужна, у меня сейчас всего 7 глубина, и я по сути упираюсь в 600. так что при очень хорошем поиске вероятно хватило бы глубины 8-9
magaiti: ну там уже суть не в 600 упереться а счет набрать
amurushkin: а как ты выводя по 7 ходов набираешь столько много?
magaiti: как в тетрисе копить строки под палку
magaiti: ахз
magaiti: я никак
magaiti: я еще не сабмитил
amurushkin: да я у wlesavo же спрашиваю
magaiti: а
magaiti: не уследил за иконками
wlesavo: magaiti не, смотри, тут два стула, либо ты не находишь хорошее решение и проигрываешь, либо находишь хорошее решение и не прогирываешь, тогда количество очков определяется только тем как быстро ты ищешь это хорошее решение
amurushkin: хехе без бага и без сортировки которая на том сиде лучше набирает получилось всего 14 лямов )). надо шириной играться наверное
magaiti: но не все решения на глубине 600 дают одинаковое кол-во очков
magaiti: хотя может и все примерно одинаковое, я не задумывался
wlesavo: amurushkin глубина 7 это значит что я ищу на глубину 7, и выбираю одно действие, считаю его состоявшимсся и заново ищу действие на глубину 7
amurushkin: да конечно не все
magaiti: тебе в любом случае придется слить Ё600 чисел
magaiti: ~600
amurushkin: а т.е ты за ход выводишь все таки больше чем 7.
wlesavo: magaiti при одинаковом количестве действий ты +- набираешь одинаковое количество очков
magaiti: ок
amurushkin: я когда вывожу по 30 похоже набирает больше но упирается в лимит. а 35 не упирается но играет хуже
wlesavo: amurushkin да, сильно больше, все что накопил вывожу
magaiti: а, там 600 инпутов по сколько осилишь ходов?
magaiti: то есть 20к ходов можно
magaiti: если по 30 за ход
amurushkin: да так и есть
amurushkin: вроде как у лидеров по 50к ходов и больше
magaiti: там точно переполнния не будет?
amurushkin: ну я еще ниразу не видел цифру больше чем 32к в одной клетке
magaiti: угу
amurushkin: как там у топов получается хз
wlesavo: не, там далековато, у меня 65k макс число, у них 131k, до 262 не уверен что кто-то оходит, может топ 1 на некоторых тестах только
wlesavo: 3 ляма очков на тест не так уж и много
wlesavo: по крайней мере до идельного скора там очень далеко
Uljahn: я правильно понимаю, что тут спаун детерминированный и предсказуемый?
wlesavo: да
magaiti: да
wlesavo: иначе по несколько действий за ход нельзя бы было вывести
magaiti: кто-то хардкодит говорят
amurushkin: да только его можно обогнать и без хардкоа
wlesavo: вестиклс хардкодит
magaiti: ну это пока он идеальное решение не нашел
amurushkin: может конечно он через пару недель выдаст что получше
amurushkin: идеальное решение это наверное 10к по 600
amurushkin: больше ходов просто нельзя
magaiti: идеальное это сколько сможешь впихнуть в 100к символов кода
wlesavo: а, он все, сдался
wlesavo: перешел на онлайн
magaiti: 2к на распаковщик и 98к на архив
magaiti: и в оффлайне искать решение каким-то образом
magaiti: задолбался сабмитить?
wlesavo: ну я его в общаке спросил тока что, сразу даже не заметил что у него язык изменился с питона на плюсы
wlesavo: думал он +10М на хардкоде получил
wlesavo: ну и да, я тут подумал что в хардкоде все тесты не нужны, если у тебя идеальное решение ты одним тестом наберешь больше чем онлайн 30 тестов
magaiti: я тут про сортировку Бабушкина вспомнил, в связи с хардкодом идеального решения
magaiti: перекликается с этим кстати
wlesavo: золотая классика про бабушкина конечно
amurushkin: это тот который антивирь на батнике придумал и получил бабло от депутата?
amurushkin: 19503260 правда 96% зараза ))
Uljahn: я как-то предлагал искать сигнатуры заархивированных решений в доступной на CG файловой системе, меня тогда даже кубер похвалил :relieved:
amurushkin: там тебе вроде не дают доступ туда?
Uljahn: на чтение дают вроде
Uljahn: папки я читал, правда файлы не пробовал
amurushkin: в песочнице же запускают решение
amurushkin: а кто сколько мс юзает на 2048?
wlesavo: 45
wlesavo: о, вестиклс меня обощел на том же алгоритме
wlesavo: змейка с брутом на глубину 7
wlesavo: правда говорил у него 6, но мож поменял
Uljahn: во, прочитал из /usr/lib/gcc/x86_64-linux-gnu/9/libgfortran.spec
- This spec file is read by gfortran when linking.# It is used to specify the libraries we need to link in, in the right# order...
Uljahn: т.е. на чтение доступ есть
amurushkin: о 20087136
amurushkin: парадокс но уменьшаю время на ход и дает лучше результат
magaiti: производительность труда растет
magaiti: хм, а зачем нужен множитель 0.9 в змейке?
magaiti: чем 1.0 хуже?
wlesavo: ну так чтобы порядок был выгоден
magaiti: я думал змейка по определению по порядку
magaiti: или мы тупо выбираем угол и считаем 4 туда 4 сюда
wlesavo: ну ты суммируешь по порядку, если с коэффициентом 1 то сумма одинаковая будет при любом порядке
magaiti: идея понятна
wlesavo: правда у меня там не 0.9 а чтото ближе к 0.5, давно подбирал надо бы перепроверить
magaiti: 0.5^i это как-то жестоко
wlesavo: ну большая часть клеток фиксирована и вариация там не такая уж и большая, но почемуто лучше работает меньший коэффициент у меня
magaiti: ну 0.5 считать легче
magaiti: сдвигом
wlesavo: не, дело не в скорости, от коэффициента вариация +- 5 лямов
amurushkin: magaiti: я думал змейка по определению по порядку, без дисконта сумма же всегда одинаковая при перестановках
magaiti: я думал мы перестаем считать если не по порядку следующее число
amurushkin: всегда по порядку то оно не бывает
wlesavo: я пробовал метрику вводить разницы между соседними, если положительная то в плюс, если отрицательная то в минус, но играло сильно хуже, даже если ее добавлять к основной с коэффициентом
Uljahn: подскажите по 2к48, там сид, который фигурирует в названиях тесткейсов, в инпутах не появляется что ли?
wlesavo: на первом инпуте только, дальше уже текуший сид
Uljahn: такое подозрение, что в инпутах уже сид после одного шага LCG
amurushkin: я считываю в инпутах. все нормально с ним
wlesavo: Uljahn возможно ты прав и с этого сида доска генерится, я не проверял соответствие с названием
Uljahn: у меня не совпадает вывод инпута и название кейса на питоне :/
Uljahn: ладно, фигня
wlesavo: но в принципе логично что он мог сделать один два спавна тайлов на доску с того же сида, чтобы отдельно доску не генерить
Uljahn: ааа, ну да
amurushkin: Uljahn: я не проверял на соответствие. главное чтобы совпадало с рассчетами
amurushkin: уже погулял сходил а сабмитить не дают )))
wlesavo: я инпуты дальше первого не считываю, но предупреждение это каждый раз напрягает конечно
amurushkin: ну как вариант
wlesavo: запустил локально брутфорс на глубину 10, посмотрим куда дойдет
amurushkin: с тем же лимитом времени?
YurkovAS: amurushkin хороший результат в 2048 :thumbsup:
amurushkin: YurkovAS: тот же алго что вчера и даже на векторах. просто пофиксил баг и подсказали что у меня оценка неправильная
YurkovAS: бим серч?
wlesavo: amurushkin не, лимит убрал, хочу теоретический предел посмотреть, но вроде как большой разницы между 7 и 10 не наблюдается, правда это еще и 3 мува
YurkovAS: эх, что-то интересное пропустил: змейки, дисконты 0.5. у меня с дисконтами плохо играло...
wlesavo: YurkovAS так у тебя тоже чтоли без змейки оценочная
wlesavo: глубина 9 с бесконечным запасом времени играет также как глуубина 7, вот это да
YurkovAS: да, без змеек, ну может дойдет, нет, так завтра в логах прочту.
amurushkin: YurkovAS: да бим серч
amurushkin: YurkovAS дисконты у меня меньше чем 0.9 плохи
wlesavo: о, YurkovAS оценочную чтоли поменяо?
YurkovAS: wlesavo да, поменял на змейку
wlesavo: во, я чето даже сразу не подумал вам сказать, думал это у всех так, потому что даже незнаю что еще можно придумать
YurkovAS: ну в общем у топов бим серч локально уже показывает 50м
wlesavo: глубина 10 и глубина 7 со змейкой по сути эквивалентны, забавно
wlesavo: локально на одном тесте или на всех?
YurkovAS: на всех. во, сабмитнул на 48.9
YurkovAS: хз, это быстрый или нет. ну буду рисковать, а то забанят
wlesavo: хорош
wlesavo: ну вообще похоже что я где то на пределе для своей глубины дальше уже надо чето нормальное использовать
YurkovAS: у тебя память динамически выделяется?
YurkovAS: а, хотя, там стек, же. в брутфорсе
YurkovAS: оффлайн пробовал? на 50-100 ходов, вдруг заметно добавят?
magaiti: о, 53к набрал
magaiti: глубина 1
magaiti: :)
YurkovAS: :thumbsup:
amurushkin: я тебя разочарую можно набрать не меньше если выводить все время DRUL ))
magaiti: ну я развил класс
magaiti: теперь можно алгоритмом заняться
magaiti: чет не врубаюсь, как именно клетки сливаются
magaiti: слившаяся клетка не может слиться снова в тот же ход?
YurkovAS: да
YurkovAS: в которую слил, больше в нее нельзя
magaiti: но можно слившуюся снова в другую
magaiti: во, вроде больше нет инвалид мувов
magaiti: а ворнинг этот все время будет?
magaiti: Warning: your code did not read all available input before printing an instruction, your outputs will not be synchronized with the game's turns and unexpected behaviour may occur.
magaiti: это когда больше 1 мува выводишь?
magaiti: а нет, еще сть инвалид акшоны . да что ж такое
amurushkin: да будет
magaiti: а че всего 39 человек играет, лол
magaiti: о, можно heapify через pop_heap ркализовать
magaiti: а я и не подумал
MadKnight: чё, ещё кто тусит тут?