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

Автор RedLord, 10 лет назад, По-русски

Не подскажете, как решать эту задачу?

Делал так: завел карту nums<long long,int> чисел, для каждого числа указал, сколько раз оно встречается и исходный массив 'a'.

Для каждой пары (i;j), j > i к ответу добавлялось: 2 * (nums[a[i] + a[j]] - (a[i] =  = 0) - (a[j] =  = 0))

Работает за . Получает TL.

код

  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

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

так оно у вас и по памяти не влазит. map при обращении по [] если не находит элемента, то создает. получается ~ (12+8+4) * 3500 * 1750 = 147 M

»
10 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится

Сортируем массив (порядок чисел не важен), фиксируем элемент, обозначающий сумму, потом двумя указателями за линию обновляем ответ. Итого квадрат.