Chat:Ru/2020-11-21

From CG community
Jump to navigation Jump to search

wlesavo: не мерил еще

MadKnight: ну посчитай

wlesavo: lf vyt ,s ljgbcfnm xnj-nj [jnz,s b ghjdthbnm pfgecnbncz djj,ot bkb ytn

wlesavo: ой

wlesavo: дописать бы до рабочего состояния, там уже посмотрим

MadKnight: чё на экран не смотришь когда печатаешь?)

Egrace: а что это за фетиш во все методы алгоритмов передавать итератор начала коллекции и конца коллекции?

Egrace: vector<Chromosome> chromosomes; sort(chromosomes.begin(), chromosomes.end());

Egrace: почему не сделать просто sort(chromosomes); ?

Egrace: вопрос про плюсы :)

TheCrucial: чтобы более универсально было. с++ не про краткость язык

Egrace: а что тут универсального? если я захочу отсортировать половину коллекции, я поделю коллекцию пополам, отсортирую нужную половину и на место старой половины вставлю новую

Egrace: но это нужно в одном случае из сотни

Xyze: это долго и медленно

Xyze: а тут как бы из коробки )

Egrace: зато в остальных 99 случаев мне приходится писать бесполезные iter->begin() и iter->end()

Egrace: могли бы перегрузить, это вообще не проблема

Egrace: но тут какой-то мазахизм сознательный

Xyze: наверное boost перегружает, возможно

TheCrucial: https://www.codingame.com/replay/507463956 найс финал

metahom: чат ожил?

metahom: когда обычно РАИК открывается? должен сегодня по идее, но во сколько?

YurkovAS: что-то поменялось: рекурс топ1, и чел. с растом из топ1-5 удалил аккаунт и сломал бота

YurkovAS: metahom раик когда-нибудь запускали на выходных? там же что-нибудь будет ломаться. что-то сомнительно...

metahom: бета -тест. ну сломается и сломается

metahom: https://russianaicup.ru/

metahom: YurkovAS, классный результат в контесте кстати. дожимай топ-20

YurkovAS: спасибо! пытаюсь

aropan: > что-то поменялось: рекурс топ1, и чел. с растом из топ1-5 удалил аккаунт и сломал бота Так-так, а есть подробности?

aropan: Хм, Emil это был? https://www.codingame.com/profile/d602fc65f0a3302a73c9221ef2b9bfc01477504 действительно удален.

YurkovAS: да да он. причем все время в топе был.

YurkovAS: хоть бы кодом с нами поделился, а потом уже удалялся :smile:

metahom: он хайдится может. или это и был рекурс

aropan: Да, обе теории хороши.

dbf: Рекурс так решил раст изучить :)

aropan: Но я все же буду больше верить в первое - reCurse же не прохожий с улицы и зачем ему этим заниматься.

YurkovAS: питон в леге :smile:

BorisZ: да точно круто блин

BorisZ: а я предал питон и бог меня наказывает

BorisZ: бог питона

dbf: главное, чтобы там не был c++ запакован внутрь

BorisZ: вряд ли - он часто высоко встает в контестах, то есть чел крутой, а упаковывать это гемор, почему бы просто на плюсах не писать

wlesavo: чокудай пришел, хех

wlesavo: короче рерайт на бимсерч уже лучше чем то что было, при этом всего 30к уникальных состояний

YurkovAS: :thumbsup:

wlesavo: и вообще еще не тюнил параметры коих легион

ilgiocatore: капец как я позорно долго думал о том, как узнать, сварил ли соперник зелье в прошлом ходу) о боже, к концу контеста мозг уже в печальном состоянии

Jokero: фига, в леге монополия плюсов))

aropan: > капец как я позорно долго думал о том, как узнать, сварил ли соперник зелье в прошлом ходу) о боже, к концу контеста мозг уже в печальном состоянии Я не писал это, но думал смотреть насколько изменился его vp (определяем купил ли что-то) и как изменился корзина камней (по ней просто узнать заказ).

aropan: Тебе надо подсобраться - контекст же только начинается, до этого был разогрев. )

ilgiocatore: я в эту сторону сначала думал и откладывал реализацию, а потом внезапно осознал, что достаточно посмотреть его количество рупий..

ilgiocatore: я только вчера написал симу. как всегда, она сначала значительно хуже, чем тупая эвристика

ilgiocatore: еще тоже долго думал, как запарно следить за urgency bonus в зельях, а потом внимательно описание прочитал и узнал, что эта инфа даётся в инпуте в параметрах tomeIndex и taxCount

aropan: > я в эту сторону сначала думал и откладывал реализацию, а потом внезапно осознал, что достаточно посмотреть его количество рупий.. Количество рупий не достаточно же, если заказы будут в одинаковую цену.

aropan: Хотя.

aropan: Да, можно на ингредиенты не смотреть - если детектить какой заказ сделал и какие заказы исчезли.

ilgiocatore: ну да, я забыл упомянуть, что мне это нужно было только для того, чтобы вести счёт сваренных зелий

ilgiocatore: чтобы в симуляции прекращать игру, когда один из игроков сварил шестое

YurkovAS: wlesavo поздравляю!

wlesavo: спасибо :slight_smile:

wlesavo: все-таки рерайт стоитл того

735487: так что все таки бимсерч надо было пилить? я вот сегодня только начал. решил начать с рандома. чет вообще плохо получилось

wlesavo: да, но у мне конечно опыт мс помог сильно, но бимсерч лучше заиграл

wlesavo: amurushkin там главное в симе вовремя заканчивать роллаут

wlesavo: и победу оценивать соответственно

BorisZ: wlesavo грац

735487: а у меня просто сима рандомом на определенную глубину и все потом оценка

BorisZ: быстро же ты переписал

wlesavo: BorisZ спс :slight_smile:

wlesavo: вчера вечер получается посидел, сегодня утром баги чистил и чуть параметры покрутил уже только

wlesavo: там явно еще сильно неоптимальная реализация, всего 30к состояний уникальных прохожу

YurkovAS: у меня вроде как все быстро работает, но этого мало. нужна хорошая евристика еще

wlesavo: у меня одна из хороших эвристик в мк была полный поток ингридиентов, то есть награждать немножко за полученные и потраченные ингридиенты

wlesavo: здесь вроде отключена, за может включу проверю

BorisZ: хитро )

wlesavo: идея в том что чем больше поток ингридиентов тем лучше

YurkovAS: томатос ссылку на статью скидывал и в телеге есть, там какие-то комбо и еще то-то. пока не осилил

735487: у меня сейчас оценка что сварил плюс инвентарь

735487: YurkovAS: теоретически эти комбы поиск сам должен находить

wlesavo: ну главное конечно оценивать победу/поражение

BorisZ: надо инвентарь не на конец всей цепочки а после варки непосредственно

BorisZ: там в конце ж будет хрень всякая ненужная

wlesavo: после варки не оч полезно как-то получалось, хот я в бимсерче там по другому и не получается

wlesavo: даже не самое дно легенды, ладно я доволен, может еще чуть потереблю параметры эвалов ближе к вечеру или прикручу че-нибудь

wlesavo: впринципе выглядит так что можно и за фтуболки побадаться

NightLuna: о, ты такими темпами еще и футболку получишь))

735487: а я похоже так и останусь в серебре :) буду ждать раика уже наверное

NightLuna: сегодня же вроде анонс, нет?

YurkovAS: wlesavo :thumbsup:

735487: NightLuna: да вроде сегодня уже старт беты должен быть

Egrace: а что за раик?

NightLuna: https://russianaicup.ru/

wlesavo: че это за херня, я пошевелил один параметр и в магазин пошел, какое топ 6

Egrace: :grinning:

NightLuna: неплохо

YurkovAS: явно улучшил, т.к. от 10 места заметно выше скоринг

wlesavo: я короче не знаю как это работает

wlesavo: стал оставлять в пуле больше изучений спелов

Uljahn: лол, найс

wlesavo: я вообще даже в легенду не собирался а тут такое, уф

Uljahn: го в топ-3 теперь :)

wlesavo: это тепереь дальше придется делать че-то, я собирался пива выпить и промоушн отпраздновать :smiley:

Uljahn: выпей пива и тереби константы

wlesavo: да чето как-то ресабмитить даже не хочется :smiley:

wlesavo: 6-9 почти одинаковый скор у всех

NightLuna: wlesavo ты не учишь во время игры, только в начале?

NightLuna: а, нет, увидела

NightLuna: учишь в середине

wlesavo: как раз эта константа на изучение дала буст какой-то аномальный

MadKnight: wlesavo запилил смитси?)

wlesavo: не, просто бим серч в рабочее состояние привел

Xyze: слушайте, кто подскажет, можно ли на плюсах bool массив из 30000 элементов заполнить false не через цикл

Xyze: точнее, быстрее чем через цикл

wlesavo: memset но лучше аккуртно его использовать

Xyze: что нить типо memcpy

Xyze: ага

wlesavo: с нулями вроде норм работает

Xyze: а с nullptr прокатит?

wlesavo: вот значения там уже сложно

Xyze: значения вообще не надо

Xyze: просто скинуть массив в исходный

Xyze: это либо 30000 false

Xyze: либо 30000 nullptr

wlesavo: ну можешь попробовать, но думаю получится чтото плохое

Xyze: ахах )

Xyze: спс, попробую

ilgiocatore: а почему с memset получится что-то плохое? он же байтами нормально нули положит и всё

Xyze: насколько я понял для false да

Xyze: а вот нулптр

Xyze: это же не нули вроде

ilgiocatore: nullptr это ноль тоже, если не ошибаюсь

ilgiocatore: у нуля в плюсах много имён )

ilgiocatore: можно проверить всегда

wlesavo: а к слову зачем тебе 30к false? :slight_smile:

Xyze: пытаюсь фильтровать одинаковые ветки

Xyze: сложная схема у меня ))

ilgiocatore: к слову bool массив можно и значением заполнить, потому что он один байт (по крайней мере на местном компиляторе)

wlesavo: мож че попроще придумать? :smiley:

Xyze: я пока смог в 2 раза срезать количество веток

Xyze: а unordered_set срезает в 4 раза

Xyze: значит надо думать дальше

Xyze: вот пытаюсь

Xyze: но этот сет при ветках > 50к штук сам меня таймаутит

wlesavo: а ачем тебе ветки > 50k

Xyze: так мне как раз и не надо

Xyze: там просто при симуляциях куча одинаковых состояний

Xyze: из-за этого я гоняю одни и те же ветки

ilgiocatore: Xyze ты как-то закодировал состояние в число до 30к?

NightLuna: 30к вообще неплохо

NightLuna: хеш какой-то?

Xyze: ага

NightLuna: его же считать надо.. это долго

NightLuna: ты же можешь создать массив интов 30к длиной

NightLuna: и в него запоминать был ты в ветке или нет, почему нужны именно bool

NightLuna: в вершине*

ilgiocatore: так для этого и нужен массив bool, зачем использовать int?

NightLuna: ну чтобы не очищать

mabu: bool bul

NightLuna: ну типа в значениях хранить номер шага... и тогда не надо очищать в начале

Hoggins: я местами что бы не очищать использую номер цикла. На следующем цикле если номер не совпадает для какого то действия, значит я его не делал

NightLuna: ну да, я про это же

MadKnight: всмысле - очищать?

MadKnight: от чего?

NightLuna: если выделить массив глобавльный, то перед каждым запуском поиска, например, нужно будет его очищать

aropan: > слушайте, кто подскажет, можно ли на плюсах bool массив из 30000 элементов заполнить false не через цикл Можно, но написать самому. Сделай массив на столько же элементов и переменную времени. Пусть будет upd[30000] = {0}, time = 0. Теперь, чтобы установить x в true нужно upd[x] = time, для проверки if (upd[x] == time), для сброса всех значение ++time.

Xyze: кажется я осилил бруфорс на глубину 6

Xyze: https://www.codingame.com/share-replay/508009104

Xyze: бот пишет - время этого хода / среднее время хода / пиковое время за игру

NightLuna: у тебя всегда глубина 6?

Xyze: справа я, но на глубине 5

Xyze: щас 100% всегда 6

Xyze: кроме пиков где отсечка на 40 мс

Xyze: это пару раз за игру

Xyze: ну как пару раз ))

BorisZ: Xyze если оба бота делают полный перебор то почему не ничья?

Xyze: это просто сид, где я всегда в таймауты бьюсь

BorisZ: ходы должны быть одинаковые

Xyze: BorisZ 6 vs 5 глубина

Xyze: при 5 1 к 1 игра

Xyze: надо бы оценку к этому чуду сделать

NightLuna: а у тебя уникальное состояние это инвентарь, усташие скилы и сделанные зелья?

Xyze: да, ну всё кроме учения спелов

BorisZ: но 6 хотов то ведь не хватит чтобы 2 зелья спланировать

BorisZ: как правило не хватит

NightLuna: я вот пытаюсь дооптимизировать, чтобы глубина была 8... чтобы успевать

Xyze: а что за алгоритм?

NightLuna: bfs

NightLuna: XD

Xyze: а ты вообще способна взять глубину 8?

NightLuna: сейчас? ну иногда

NightLuna: если не все отдохнувшие

NightLuna: но вообще в чате в тг писали, что глубина 8-10

Xyze: жоска, я такое вообще не потяну

Xyze: но я щас буду уходить от брутфорса если он не прокнет

wlesavo: NightLuna конвертируй в бимсерч, изи глубина 8-10

wlesavo: это проще чем с MC переписать даже

NightLuna: ага, тоже об этом думала, зачем оптимизировать, если можно на бимсерч переписать

NightLuna: но я его никогда не использовала в контестах... сложно сказать, что получится

Xyze: аналогично

NightLuna: у меня сейчас в самом начале с 10 изученными спелами получается 7 глубина

Xyze: я вытягиваю 50к состояний за 40 мс

Xyze: но у меня клон состояния делается

Xyze: то есть я помню вообще все пути к состоянию

Xyze: какой-нить монтекарло без памяти изи 150к сим сделает

wlesavo: я один раз только до этого делал в 2048

wlesavo: у меня было 15к сим на глубину 7-9 +-, но там больше и не надо

NightLuna: надо будет порешать потом 2048

NightLuna: я чет пропустила ее

wlesavo: 2048 мега интересная вышла

wlesavo: 150к сим в мс не знаю, чето заоблачные цифры какие-то

Xyze: ну блин, каждый раз делать клон объекта с 14 спелами, 5 банками и инвентарем

Xyze: по времени будет как 1 сима хода

NightLuna: зачем тебе так много в стейте

Xyze: ну +-

Xyze: потому что я мало думал какие части выделить в стейт

NightLuna: хватит инвентаря, маски уставших спелов, скора и сделанных заказов

wlesavo: а, 150к ходов это норм, у меня иногда достигало приерно такого

Default avatar.png timqsh: >слушайте, кто подскажет, можно ли на плюсах bool массив из 30000 элементов заполнить false не через цикл точнее, быстрее чем через цикл

Может std::bitset использовать для этого?

Default avatar.png timqsh: mybitset.set() - все true mybitset.reset() - все false

Xyze: хмхмхмхм

Xyze: надо обязательно глунять

Xyze: спс

Default avatar.png timqsh: Он еще и хранить их оптимальнее по 1 биту на флаг, а не по байту)

BorisZ: чел на питоне в леге намекает как бы что количество сим и глубина - не главное )

wlesavo: но челы на плюсах тоже намекают :smiley:

ilgiocatore: timqsh ну и там memset под капотом как раз внутри reset функции

ilgiocatore: но хранит битами, да

ilgiocatore: словами размером unsigned long

Default avatar.png timqsh: > словами размером unsigned long то есть он мне на bitset<6> 4 байта выделит? Я думал оптимизирует, чтобы 1 был.

ilgiocatore: ну я сейчас исходники глянул мельком, мб не всё увидел

Default avatar.png timqsh: Тогда для небольшого количества флагов будет оптимальнее руками битмаску запилить)

Xyze: ща залью, посмотрю как это мне не поможет =)

Xyze: хотя вдруг

Xyze: и буду более полезные вещи пилить

aropan: >>слушайте, кто подскажет, можно ли на плюсах bool массив из 30000 элементов заполнить false не через цикл > точнее, быстрее чем через цикл > Может std::bitset использовать для этого? Чуть выше писал, что для этого нужно сделать. Оптимальнее только если нужно память сэкономить, а так там все операции за O(1).

Xyze: чат лагнул?

ArchStanton9: Поменял значения в структурке дельты с i32 на i8, и начал вместо 15к нод считать 35к

ArchStanton9: как раз на 7 ходов в глубину

ArchStanton9: надо было еще неделю назад так сделать)

BorisZ: некоторые в 2 байта запаковывают, по 4 бита как раз хватает от -5 до +10

Empted: почему производительность выше если работать с byte? только по памяти же выигрыш должен быть

Empted: наоборот же, если поля не выравнены под 32 или 64 бита то хуже, разве нет?

ArchStanton9: Возможно это как-то влияет на выравнивание в других структурах так что их становится проще копировать

BorisZ: это да, но есть еще другие факторы - больше влазит в кэш процессора может фиг знает

BorisZ: копирование может быстрее если в 2 раза меньше копировать надо

wlesavo: а можете подсказать пожалуйста, у меня есть хэш состояния в long long, и я проверяю дубликаты в unordered_set тоесть по хэшу нахожу входит ли он в сет или нет, есть что-то быстрее?

wlesavo: я понимаю впринципе что можно руками накостылить что-то быстрее, но наверное есть решения

wlesavo: мне нужно просто проверить есть ли такой хеш в сете и если нет добавить его

wlesavo: внезапно эта проверка жрет 90% моего времени, потому что он еще и лонг лонг преобразует в свой хэш и уже по нему ищет

wlesavo: и потом второй раз преобразует при инсерте

Xyze: я ж говорил что у меня unordered_set таймаутит код

Xyze: потому я и костылил

NightLuna: как-то мало 30к для хранения состояния...

Xyze: я ж добивался не полностью срезания веток как set умеет делать

Xyze: а приемлимое количество

Xyze: щас я из 10к делаю 4к, а сет делает 2,5к

Xyze: но сет слишком долго там всё считает

wlesavo: хм

Xyze: то есть я по факту пропускаю дубли, но мало

wlesavo: если придумаешь чето умное я послушаю с удовольствием

Hoggins: wlesavo, а почему бимсерч а не полноценный mcts?

wlesavo: малой кровью хотел обойтись и знал что на бимсерче люди проходили

wlesavo: в итоге и правда малой кровью

735487: о пока я ходил меня примерно с 14 места серебра в голду пропушили ))))

BorisZ: угу, надо больше ходить

BorisZ: у меня вот не получается предсказание противника - играет что с ним что без него одинаково

BorisZ: если бы хуже играло - было бы понятно, а то примерно в одну область пушится

BorisZ: может тут вобще не стоит предсказывать ничего

eXhaustedUA: привет, а кто-то на свифте пишет? может кто знает как померять время выполнения хода? а то мне стандартные функции показывают по 100 мс, хотя лимит вроде 50

BorisZ: eXhaustedUA проверь что таймер стартует после получения первой строки инпута

BorisZ: если до инпута - то ты и за себя и за врага меряешь или что-то среднее

eXhaustedUA: BorisZ после того как считываю actionCount типа?

BorisZ: угу

eXhaustedUA: хм, похоже на правду, спасибо

WhiteCrow: Чё там, меньше двух дней осталось?

WhiteCrow: Пора просыпаться?

WhiteCrow: Я слышал, что в этот раз тестирование очень долгое

BorisZ: с таймаутами проблем больше чем обычно - много народу

BorisZ: хотя и весной было не меньше

wlesavo: BorisZ у меня 1000 роллаутов на оппонента хвататет чтобы предсказать окгда он наберет 6 зелий и примерно очки его, больше можно не предсказывать ничего

BorisZ: попробую, спасибо, я пытался слудующее зелье врага предсказывать

BorisZ: и соответственно корректировать скор

wlesavo: у меня было что то такое реализовано, но вроде как без этого играло лучше

BorisZ: но получается хрень, видимо они гады что-то другое варят постоянно

wlesavo: ну ты просто слишком хорошо все равно не предскажешь, а цена ошибки очень велика

wlesavo: то есть ты себе будешь искать с плохим предсказанием

BorisZ: да, я вижу что он иногда правильно варит а иногда нет

Zhmyh: Написал генетический алгоритм для подбора параметров. На одно поколение из 10 челиков уходит целых 10 минут :tired_face:

Zhmyh: Лучше б сам с собой играл

wlesavo: а всегда так было что в легенде не 10 игр со старта а по одной

BorisZ: вроде по 10 было всегда

wlesavo: тут по одной запускается, непривычно так выглядит

wlesavo: может по тому что относительно небольшая пока легенда

BorisZ: крутить параметры - дорога в ад, надо фичи пилить

Zhmyh: Ну можно не параметры

Zhmyh: Мне немного изменить - и нейронка будет

wlesavo: о, все таки не по одной а три сразу

wlesavo: вместо 10

C2H5OH: Вот как так? В списке на арене я проиграл, нажимаю "загрузить в IDE" - а я там выиграл.

Zhmyh: Отсечение по времени

Zhmyh: А время разное

Zhmyh: Или рандом

BorisZ: не - либо у тебя либо у врага ГСЧ

BorisZ: про себя даже не всегда можно быть уверенным что все детерминированно

MadKnight: wlesavo может потому что в леге 4 человека?)

YurkovAS: wlesavo если использовать для уникальности только хешкод, то могут быть коллизии. Т.е. 2+ разных состояний будут иметь одинаковый хешкод и посчитаются как дубликаты

BorisZ: а зачем вобще проверять на уникальность в бимсерче - пусть будут одинаковые состояния

wlesavo: YurkovAS да я понимаю, но я готов этим пожертвовать

wlesavo: BorisZ это как ГА где вся популяция одинаковая

wlesavo: учет дубликатов для бимсерча похоже что одна из ключевых вещей

BorisZ: а типа если дубли будут с топовым скором то они всех выживут

wlesavo: да

wlesavo: и быстро расплодтся на всю ширину

BorisZ: memcmp - медленно?

BorisZ: перетасовать поля стейта чтоб все указатели на родителя были вначале а инвентарь и спеллы все вместе в конце, эту часть стравнивать

BorisZ: хотя надо будет много раз сравнивать (

wlesavo: ну да, хеш получается не медленно даже, просто хочется еще быстрее

YurkovAS: саму функцию можно ускорить

wlesavo: а можно подсказочку как? у меня я посмотрел и в 2048 изза этого сильно страдает код

wlesavo: там еле ширину 40-50 вытягивает

YurkovAS: например, было так: r = 31 * r + inv0; r = 31 * r + inv1; r = 31 * r + inv2;

YurkovAS: http://chat.codingame.com/pastebin/fc64e36e-bd39-467f-b49e-46546e3417bd

YurkovAS: избавляется от лишних умножений

wlesavo: а, ну сам хеш мой у меня быстро считается, тоже двигаю

wlesavo: но вот дубликаты ищутся долго

wlesavo: хеш от int64 еще внутренний какой-то считается, я думал перегрузить, но не уверен на что вообще

YurkovAS: ну это не знаю даже, юзаю unordered_set, глобальную переменную и каждый раз делаю clear

wlesavo: а примерно сколько уникальных посещений у тебя?

YurkovAS: это как?

YurkovAS: а, понял

YurkovAS: можно еще юзать фиксированный всегда отсорированный массив

YurkovAS: у меня так сделано. и тогда через бин поиск в нем искать место для вставки. хз, как оно по скорости. а в нем лежат указатели

YurkovAS: оно вроде бы быстрее, чем добавлять всегда в массив, потом его сортировать и отсекать лишние.

wlesavo: хм, ну ладно, короче простого решения нет, может сам подмаю потом

YurkovAS: уникальные посещения измерять после отсеивания дубликатов?

wlesavo: да

YurkovAS: у меня там еще отсеивание по скору есть, т.к. массивы отсорированы и мы точно знает кто не подходит

YurkovAS: может проще роллауты замерить...

YurkovAS: или забить

wlesavo: хм, ну да, я тоже пытаюсь по скору отсеивать, но чето это почти ничего не дает похоже, плохая оценка может

Default avatar.png TTeaLL: есть кто живой?

Xyze: ага

Default avatar.png TTeaLL: да уже решил проблему)

wlesavo: я тут понял что мой хэш не работает, и можно просто убрать проверку уникальности

wlesavo: и в 10 раз увеличить ширину луча :grinning:

YurkovAS: у меня с больше 5к играет хуже

wlesavo: ну у меня чем больше ширина тем проблематичнее с роллаутами еще

wlesavo: с таймаутами всмысле

YurkovAS: прогонял еще раз ту лучшую версию? в топ5-10

YurkovAS: так и не нашел граалей

wlesavo: YurkovAS да, не поднимается туда, сейчас сабмиты очень странные, на дне сильные игроки и просто не дают подняться

wlesavo: видимо и правда удачный сабмит был, сейчас разве что в топ 15-16 поднимался когда дождался конца сабмита

wlesavo: думаю в районе топ 20 если сабмитнусь успокоюсь

wlesavo: а нет, работал все-таки хэш

wlesavo: иакое себе время тюнить параметры конечно, сабмиты вообще непонятные