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

Автор agul, 13 лет назад, По-русски
На всякий случай напоминаю расписание раундов Google Code Jam.


Продолжительность контеста - 2 часа 30 минут.

К участию допускаются участники, прошедшие квалификацию (набравшие >25 баллов в 24-часовом квалификационном раунде).

В Round 2 проходят первые 1000 участников из каждого раунда. 

  • Если вы прошли отбор в одном из под-раундов, то вы не сможете участвовать в последующих под-раундах.
  • Если вы не прошли отбор в под-раунде, то вы сможете принять участие в следующих под-раундах, если они еще останутся.
Например: вы не прошли отбор в Round 1A, тогда вы еще сможете принять участие в Round 1B и 1C. Если вы пройдете отбор в Round 1B, то уже не сможете принять участие в Round 1C, зато сможете участвовать в Round 2.

Предлагаю после окончания раундов обсудить здесь задачи и решения.

P.S. Во избежание неприятных ситуаций, прошу не обсуждать задачи вплоть до окончания текущего раунда.
  • Проголосовать: нравится
  • +43
  • Проголосовать: не нравится

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

оставлю комментарий, чтобы поднять пост в прямом эфире

"данный комент. не несёт никакой информации.
Он направлен исключительно подъёме данного блога в графе "прямой эфир"
Он направлен на развитие популярности.:))))"

интересно, много ли желающих будет писать 1A в 5 утра по мск? =)
  • 13 лет назад, # ^ |
      Проголосовать: нравится -8 Проголосовать: не нравится
    В любом случае, в раунде 1А шансы максимальные. Если судить по результатам участников, занявших 1000 место в прошлом году, то:
    в 1А достаточно было решить за хорошее время первую задачу;
    в 1В шансы были минимальные - нужно было сдать первые две задачи за хорошее время;
    в 1С - первую полностью и третью easy - причем тоже за хорошее время.
    Пока что традиция сохраняется )
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Тем не менее из 1А я не прошел, а в 1B попал в TOP-100. В первую очередь всё от задач зависит, имхо)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Ну наверное еще сказывается, что пишешь рано :) По крайней мере в 1А у меня это сильно повлияло. 

        • 13 лет назад, # ^ |
            Проголосовать: нравится +8 Проголосовать: не нравится
          Кстати, сколько себя помню, я ни разу в 4-5 утра не писал успешно. Всегда обидные тупняки, фейлы и баги))
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            +1) Поэтому уже давно не пишу в это время. в 1А просто подумал, что будет просто, но ошибся)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Не знаю как 1A, 1C был проще 1B в смысле прохождения, что и понятно: -2000 участников с первых двух раундов.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Контест начался!
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А там в табличке уже окончательные результаты по Large сабмитам стоят?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    При окончании контест сразу поднялся на почти 100 мест=> Видимо да
  • 13 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    Так там же только сверить файл с эталоном. Это не очень нагружает систему. А перепосылать large все равно нельзя. Вот они и тестируют по ходу контеста.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Объясните, пожалуйста, толком условие задачи B
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Вы загадываете слово из списка.

    Второй человек называет буквы в каком то порядке, если они соответствуют хотя-бы какому-то слово из словаря, которые еще подходят под то, что есть)ранее названные буквы на тех же местах, что и в загаданном слове)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Ничего не понял ><

      Конкретно интересует насколько умный наш противник? Например, были слова aabc(его загадали) и aaad, он говорит букву a, после этого aaad останется допустимым словом?

13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Хехе, одной хватило
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится -7 Проголосовать: не нравится

    А что сложного в B-small — перебор за О(n^2*m*26) вроде бы просто пишется?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вроде бы просто, но еще руки кривыми бывают) Что-то не зашло
13 лет назад, # |
  Проголосовать: нравится -9 Проголосовать: не нравится
А у меня палиндром — 474 =)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Что - то я видимо утром туплю. Объясните, пожалуйста, как нормально сдавать B-hard? Я делал всякую муть с хешами и масками, но это было оочень долго)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я в map кидал хеши открытых букв для каждой строки, потом для каждого хеша ставил метку, есть ли в какой-нибудь строке с таким хешом очередная буква. По времени у меня отработало за минуту, но я ошибся в подсчёте хеша.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Фиксируем последовательность букв. Идем по ней. Обрабатываем все слова одновременно. Для каждого из них храним, что уже отгадали. На каждом шаге пытаемся делать переход во всех словах, сортируем их и объединяем в группы. Асимптотика M*N*logN*длину строки.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится

    Решаем отдельно для каждой последовательности букв.

    Для каждого из 26 ходов делаем map<string,int> (всего 26 мэпов), который говорит, сколько есть слов, которые перед этим ходом будут иметь заданную маску, и при этом имеют в себе букву, которую на этом ходу назовет Шон.

    Затем, имея эту карту, идем по словам, для каждого слова имитируем игру -- построенная карта нам подсказывает когда Шон будет делать ход, а когда нет.

    Такое решение работает 7:20 секунд на большом тесте :о)

     

    • 13 лет назад, # ^ |
        Проголосовать: нравится +2 Проголосовать: не нравится
      Спасибо, Шурик) Но так то 7:20 - критично немного :) А С ты как делал?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Мелкая С решается жадно -- если есть фигня, которая дает ход -- играешь ее. Дальше на каждом ходу либо играем лучшие (по количеству добавляемых очков) Т карточек, забивая на то, сколько карт они добавляют, либо играем лучшую карточку, дающую еще карту, и продолжаем рекурсивно. Так как в первом случае ходов больше не остается, решение не получается экспоненциальным.

        Большое решение я писал динамикой, храня последнюю разыгранную карту, не дающую ход (дающие ходы играем сразу как берем). А правильно было отдельно хранить последнюю, дающую один ход, и последнюю, дающую два хода.

         

      • 13 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится +3 Проголосовать: не нравится

        я написал рекурсию (макс_количество_промахов, индекс_сложного_для_угадывания_слова) S(v - вектор_индексов_слов_которые_подходят, pos - позиция_в_списке_L)

        если осталось одно слово в векторе, то чувак уже ошибаться не будет и ответ это (0, v[0])
        иначе построим для каждого слова из вектора битовую маску позиций, где стоит буква L[pos]
        разобъём все слова на несколько множеств, в которых эти маски совпадают.
        запускаем рекурсию на этих множествах со сдвинутой позицией pos, выбираем наилучший ответ.
        ну и не забыть что в случае нулевой маски и количестве множест большем чем 1,
        чувак пытался угадать букву и не угадал (т.е. произошёл промах)

        работает 15 сек
    • 13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится
      Да я вот так же сдал в дорешивании, но у меня работало минуты три. Чем хорош GCJ - можно вести себя естественно, а не делать вид, что руки у тебя растут из плеч O:-)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Такое же решение, только с небольшими оптимизациями (типа использования вместо самой строки хеш, который на длине до 10 можно сделать уникальным, использования одного map-а вместо нескольких в котором перезаписываются только изменённые значения, ну и вместо количества - set) и на Java у меня решает B-large за 15 секунд.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А на чем у людей A-large слетел?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А С easy решалась перебором количества добавленных, предварительно выкинув все карты которые увеличивают количество ходов?
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    C easy решалась симуляцией + после каждого хода смотрим, не надо ли взять все оставшееся 0 x 0 картами
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
как решалась C large?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Заведем 3 приоритетные очереди - будем хранить очки для имеющихся карт вида 0 x 0, 1 x 0 и 2 x 0. При добавлении карты если у нее t != 0 сразу ее играем, иначе добавляем в соотвествующую очередь. Дальше либо мы играем сколько можем карт из 0й очереди и на этом все, либо мы играем лучшую карту из 1й очереди и тогда очищаем вторую, либо мы играем лучшую карту из 2й очереди. Доказывать почему это проходит по времени я не умею, но тем не менее
    • 13 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

      не понял объяснения. "либо мы играем лучшую карту из 2й очереди.", а что мешает нам потом очистить все очереди? или это переход дп объясняется?

      PS: 1 x 0 имеется в виду c x t ?

      • 13 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

        Никакого ДП нету, есть перебор по сути. Просто мы говорим, что если мы играем карту 1 x 0, то никакую из текущих карт 2 x 0 мы уже не сыграем
        PS да
13 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
Для спавших и непрошедших: Через час второй раунд.
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Тем кто пишут.
Можете выложить условия здесь?

P.S. Просто я уже отобрался и не могу участвовать, а порешать хочется.
P.S.S. Если это запрещено правилами, то не стоит :).
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Не туда
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Какие ошибки можно сделать во втором туре в 2-large?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Наверное, слишком маленькая верхняя граница. 1e20 проходит
    Давайте новую тему вообще для раунда 1B
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Она самая. 1e8 -> 1e12 = AC
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я вообще как-то плохо определял верхнюю границу. Из-за этого g++ ругался, говорил что не влезает в стандартный тип, хотя в действительности все влезало. Вот потому например я запорол ее.
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Спасибо. Должно 5e19 проходить, если я ничего не путаю. А тему можешь сам создать :).

      UPD. Ой, бред написал. 5e11.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        В моих тестах максимальный ответ: 499999500000.000000000000
        Должно проходить 5e11, да.
        • 13 лет назад, # ^ |
            Проголосовать: нравится +4 Проголосовать: не нравится
          Кажется у них неправильный разбор. Там бинпоиск до 10^10.
          • 13 лет назад, # ^ |
              Проголосовать: нравится +35 Проголосовать: не нравится
            Упс. Спасибо, поправили :)
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Я что-то начудил с бинпоиском, в результате small сдал с поиском до 10^9, а large сдать не успел - увидел, что у меня подозрительно бинпоиск сходится к верхнему пределу (10^9), начал исправлять, сначала просто типы поменял и пределы, потом еще что-то... А он перестал сходиться вообще:)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Зачем 1e20? Можно же целочисленно все делать.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Может быть минимальная и максимальная граница бинарного поиска?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +13 Проголосовать: не нравится
    B-large? Прочесть D в переменную типа int, а затем получить переполнение при вычислении последнего чела, которые выходят из точки i:
        forn(i, n)
        {
            double first = max(p + d, segs[i].first);
            double last = first + d * (v[i].second - 1);
            if (last > segs[i].second)
                return false;
            p = last;
        }

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    У меня бинпоиск, если писал r-l>1e-6 зацикливался. r=1e12 ставил. Переписывал на long double. Менял границы. В итоге получил Time Expired. Хотя надо было просто поставить 100-200 итераций бинпоиска, что до меня дошло только после.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      У меня сначала та же проблема была. Потом оказалось, что ответ - целое или полуцелое число, так что r - l > 1e-3 спокойно проходит:)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ну это известный способ..
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Аналогично. Но я, потом все на long long'и заменил (и координаты в 2 раза).

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
В B-large мое решение, получившее wrong, валится на одном единственном тесте и более того, получает accept на дорешивании..
  • 13 лет назад, # ^ |
      Проголосовать: нравится -8 Проголосовать: не нравится
    Плохие тесты?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Видимо, да. Я, правда, не понимаю, почему мое решение дает wrong, но оно его дает. Идея была в том, что вместо бинарника по времени я пускал тернарник по тому, насколько влево мы сдвинем самую левую точку. Функцией для тернарника было минимальное время, которое на это понадобится. Видимо где-то в ее вычислении я и допустил ошибку. Странно только, что проходит все тесты, на которых мне удалось проверить, кроме одного.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Нашел еще один тест из in-файлов контеста, на котором мое решение падает. Значит, тесты нормальные. Только на инпуте из дорешивания их нет.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Кто как решал 2С large?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Поиском в ширину :)

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

    Затем поставим какие-нибудь два разных цвета на соседние вершины и научимся красить многоугольник, у которого две вершины уже покрашено.

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


    • 13 лет назад, # ^ |
        Проголосовать: нравится -8 Проголосовать: не нравится
      ...научимся красить многоугольник, у которого две вершины уже покрашено...

      Такую ересь написал на это место, что оно упало и потом еле нашел глюк. Неправильные ответы были только на больших тестах (>200 вершин). Короче, у меня глючило если разность цветов этих вершин не взаимно проста с ответом. А такое могло возникнуть только при специальных условиях, так как обычно она взаимно проста и меняется только в специальных случаях. Намучился вобщем.


      • 13 лет назад, # ^ |
          Проголосовать: нравится +11 Проголосовать: не нравится
        На такие задачи полезно делать как можно больше assertion-ов, меня это пару раз спасало на large-тесте. За 8 минут почти любой мелкий баг можно исправить, главное его обнаружить
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      3 вопроса:
      1) Как красить многоугольник у которого две вершины покрашены.
      2) Почему у многоугольника будут покрашены только 2 вершины, ведь в то время как многоугольник лежит в очереди может ещё какие-то вершины будут покрашены.
      3) Почему мы всегда можем так красить, т.е. почему не может случиться такого, что мы красим красим, а потом появляется многоугольник который мы уже не можем покрасить используя все цвета.
      Надеюсь вопросов не очень много))
      • 13 лет назад, # ^ |
          Проголосовать: нравится +3 Проголосовать: не нравится
        На все эти вопросы очень хорошо отвечено в разборе.

        Скажу только по первому если у нас вершины покрашены в цвета A и B и ответ K>=3, то делаем перестановку чисел от 1 до K, которая начинается на A, B и циклически ее размножаем на наш многоугольник. Если последнее число оказалось равно первому, то меняем его на какое-то не равное первому и предпоследнему (такое найдется так как K>=3)
        Пример
        K=4 многоугольник из 9 вершин начинается на 3 1
        получаем сначала
        3 1 2 4 3 1 2 4 3
        потом последнюю тройку меняем например на 1
        3 1 2 4 3 1 2 4 1
13 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
у меня одного не показывает задачи с ошибкой 503 ??
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
как можно на С вывести символ '\' ??? О_о
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Вопрос по B: поясните первый пример, пожалуйста. Я не понимаю
  • 13 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится +6 Проголосовать: не нравится

    у нас расстояния 3 5 3 5 3 5 3 5
    если перевести во время, то будет
    6 10 6 10 6 10 6 10

    первые 20 часов летим с 0,5 скоростью
    за это время пролетаем первые 2 планеты и 4 часа во второй

    у нас остаются в часах
    0 0 2 10 6 10 6 10

    ускоряем в два раза две 10
    0 0 2 5 6 10 6 5

    20 + 2 + 5 + 6 + 10 + 6 + 5= 54
  • 13 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится
    20 часов пройдет когда мы проедем 2 полных участка ((3 + 5) / 0.5) и 1 неполностью (2 / 0.5). Построим "ускорители" на 2 последних отрезках длины 5. Мы проедем их за 10ч + 2ч на остаток отрезка выше + 10ч на ещё 1 отрезок длины 5 + 12ч на 2 отрезка длины 3 + 20ч = 54 ч.

    Лучше всего это нарисовать.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

    case#1: ставим ракетоноситель на планеты 3 и 5, до планеты 3 долетаем за 22, там на ракетоносителе (он уже готов)  долетаем до 4й за 5: 22+5=27, потом от 4й до 5й летим своим ходом за 6: 27+6=33 потом на 5й планете берем ракетоноситель и долетаем до 6й за 5: 33+5=38 ну и от 6й до 8й долетаем за 16: 38+16=54 вот так.
    P.S не заметил, что уже объяснили
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      О, значит я условие задачи неправильно понял... ( Я думал, что мы заказываем турбо, находясь на планете, а потом, как только он появляется, сразу используем его
13 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
Третий раунд очень простой для прохождения получился.
Пишешь первую, пишешь переборы по 3й и 2й (или нормальное решение по второй), укладываешься в 1:58 и проходищь)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Действительно, получилось достаточно просто.

    Первая  - однозначно халява; перебор в мелкой третьей загнать было просто.
    А во второй решение само по себе не сложное.

    Разбор по задаче С впечатляет :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ее можно было делать почти влоб - для каждого делителя максимального числа просто влоб его проверить за O(10000). Ну и + еще 1 случай про LCM всех чисел.
      Сложность на 1 тест будет O(10^5.3333 * 10^4)
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится


    может кто-нибудь глянуть мою B? я ошибок не вижу (и делал, как оказалось, вроде по разбору), но где-то какой-то мелкий баг,  видимо, ибо кушать не захотело.
    upd: после небольших шаманств по совету yarr.
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      0 ≤ t ≤ 1011, как минимум.

      Может и другие переполнения есть. Плюс даблы не ок, оно без них решалось, т.к. ответ целый же :)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        про переполнение-спасибо. дырявая моя башка.

        с даблами -да. почему-то в спешке так написал, видимо, в качестве очередной попытки после того, как первый раз не зашло
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        у меня например при выводе 10.000000
        получало Incorrect, а при выводе 10 - Correct, при том же самом решении.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          а можешь куда-то выложить свой аутпуст и из текущего практиса? (я так понимаю, инпут сейчас один на всех)
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Удалено (туплю).
13 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
Минут пять думал, как выводить символ '\', потом забил и вывел char(92). Только после контеста вспомнил, что можно выводить так: cout << '\\';
  • 13 лет назад, # ^ |
      Проголосовать: нравится -8 Проголосовать: не нравится
    Если уж не знаешь/забыл как выводить - можно нагуглить "ASCII Table", это занимает секунд 15-20, а не 5 минут
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      А можно писать код в Far'е.

      Там достаточно посмотреть в правый верхний угол и сразу видно, какой код у символа - ещё 15-20 секунд экономии :)

13 лет назад, # |
Rev. 5   Проголосовать: нравится -8 Проголосовать: не нравится

не могли бы найти лажу в этом коде по задаче С ?

полконтеста затупал над этим, но сейчас вроде исправил и в Practice не сдается :(

UPD не актуально
13 лет назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится
А B-large решалась жадно?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Что значит жадно?

    Смотрим сколько осталось лететь до каждой планеты через время t, берём L максимальных времен и делим их пополам. Вроде очевидно. :-)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      ну да, это и есть жадно) берем же максимальные времена