В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
sergooopoop
sergooopoop
01.08.2021 05:03 •  Другие предметы

Коля решил написать свою собственную игру про покемонов. Все они принадлежат к одной из двух противоборствующих сторон. Так как

Ответ:
arseniy2607
arseniy2607
16.04.2019 22:50
Решение, в котором перебираются все возможные пары покемонов и подсчитываются те из них, где разница координат нечётна, набирает 75% баллов. Сложность такого решения O(N2).
Чтобы получить полный балл, нужно отсортировать всех покемонов по возрастанию (или убыванию) координат. Затем можно перебирать их последовательно, подсчитывая тех, кто стоит на чётных и нечётных позициях. Тогда каждый следующий сражается только с теми, чья чётность с ним не совпадает. Сложность такого решения может быть O(N log N) при использовании эффективной сортировки.
#include <fstream>
#include <algorithm>

std::ifstream in("input.txt");
std::ofstream out("output.txt");

int a[100000];

int main()
{
  int n;
  in >> n;
  for (int i = 0 ; i < n ; ++i)
    in >> a[i];
  std::sort(a, a + n);
  int count[2] = {0, 0};
  long long res = 0;
  for (int i = 0 ; i < n ; ++i)
  {
    res += count[1 - a[i] % 2];
    ++count[a[i] % 2];
  }
  out << res;
0,0(0 оценок)
Популярные вопросы: Другие предметы
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?