Олимпиадный тренинг

Задача . C. Хороший массив


Задача

Темы: *1300

Назовем массив хорошим, если в нем есть элемент, равный сумме всех остальных элементов. Например, массив \(a=[1, 3, 3, 7]\) — хороший, так как \(a_4=7\) равно \(1 + 3 + 3\).

Вам дан массив \(a\) из \(n\) целых чисел. Ваше задание — найти все такие индексы \(j\) этого массива, что после удаления \(j\)-го элемента массив станет хорошим (назовем такие индексы красивыми).

Например, если \(a=[8, 3, 5, 2]\), красивые индексы — \(1\) и \(4\):

  • при удалении \(a_1\) массив станет \([3, 5, 2]\), и этот массив хороший;
  • при удалении \(a_4\) массив станет \([8, 3, 5]\), и этот массив хороший.

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

Входные данные

В первой строке записано одно целое число \(n\) (\(2 \le n \le 2 \cdot 10^5\)) — количество элементов в \(a\).

Во второй строке записаны \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^6\)) — элементы массива \(a\).

Выходные данные

В первой строке выведите \(k\) — количество таких индексов \(j\) массива \(a\), что после удаления \(j\)-го элемента массив станет хорошим (то есть, выведите количество красивых индексов).

Во второй строке выведите \(k\) различных целых чисел \(j_1, j_2, \dots, j_k\) в любом порядкекрасивые индексы \(a\).

Если таких индексов нет в массиве \(a\), в первой строке выведите \(0\), а вторую строку оставьте пустой или не выводите вообще.

Примечание

В первом примере можно удалить любой элемент со значением \(2\), и массив станет \([5, 1, 2, 2]\). Сумма массива равна \(10\), и есть элемент, равный сумме остальных (\(5 = 1 + 2 + 2\)).

Во втором примере можно удалить \(8\), и массив станет \([3, 5, 2]\). Сумма равна \(10\), и есть элемент, равный сумме остальных элементов (\(5 = 3 + 2\)). Также можно удалить \(2\), и массив станет \([8, 3, 5]\). Сумма равна \(16\), и есть элемент, равный сумме остальных (\(8 = 3 + 5\)).

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


Примеры
Входные данныеВыходные данные
1 5
2 5 1 2 2
3
4 1 5
2 4
8 3 5 2
2
1 4
3 5
2 1 2 4 3
0

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя