1 of 5

Муниципальный этап�Разбор задач

I вариант

2 of 5

Планеты для заселения

  • На этапе считывания отбрасываем планеты, у которых значение хотя бы одной характеристики ниже порогового.
  • Для каждой планеты считаем суммарное значение ее параметров.
  • Выводим только те планеты, для которых суммарное значение параметров превосходит среднее арифметическое суммарных значений подходящих планет.
  • Для того, чтобы названия планет располагались в лексикографическом порядке при равенстве сумм параметров, удобно сохранить данные в массиве pair<int, string> *planet (первое число – сумма параметров, второе - название), а затем отсортировать его элементы.

3 of 5

Легенды космических битв

  • Идея решения: на позиции под ударом необходимо поставить сначала корабли с самой высокой ценностью, затем – с самой низкой.
  • Сортируем полученные данные.
  • Создаем массив, в который копируем данные (максимальные или минимальные элементы) в нужные ячейки.
  • Оставшиеся данные копируем произвольным образом на незанятые места (например, по очереди).

4 of 5

Космические корабли цивилизации

  •  

5 of 5

Галактическая работа в команде

  • Идея решения: проверить граф на двудольность.
  • Формируем граф: вершины – люди, ребра – отношения дружбы.
  • Поиск в глубину от каждой компоненты связности.
  • В ходе поиска в глубину пытаемся пройти по всем соседям данной вершины, при этом красим каждую непосещенную вершину в один из двух цветов. Если один из соседей уже имеет цвет, совпадающий с цветом текущей вершины, граф нельзя разбить на две части.
  • Удобно передавать цвет в виде параметра функции поиска в глубину: dfs(int v, int color)