Вступление
Эта задача представляет собой усложнённый вариант задачи
"Pascal против C++". Мы, Timus Top Coders, посвящаем её тем, кто всё ещё верит в мощь человеческого интеллекта. В то, что совершенству нет предела. В то, что все языки равны. В свободу выбора. В программирование без ограничений! Мы счастливы, что сумели создать такую задачу. И надеемся, что Вы будете гордиться тем, что смогли её решить.
Задача
Последовательность S состоит из N элементов S[i], пронумерованных от 1 до N. Из этой последовательности необходимо выбрать максимальное количество различных элементов, являющихся последовательными членами некоторой возрастающей арифметической прогрессии. Порядок этих элементов в последовательности S не имеет значения. И да пребудут с Вами Pascal, C++ и Java ;)
Исходные данные
Первая строка содержит целое число N (2 ≤ N ≤ 10000). Вторая строка содержит N целых чисел S[i] (1 ≤ S[i] ≤ 109).
Результат
В первую строку вывести максимальное количество элементов. Во вторую строку вывести через пробел и в любом порядке номера этих элементов в последовательности S. Если задача имеет несколько решений, то вывести любое из них.
Пример
исходные данные | результат |
---|
6
7 3 2 3 5 9
| 4
4 5 1 6
|
Замечания
Мы рекомендуем Вам решать эту задачу на C++, поскольку в данном конкретном случае местный компилятор C++ генерирует более эффективный исполняемый файл, чем компиляторы Pascal и Java.
Автор задачи: Илья Гребнов, Дмитрий Ковалёв, Никита Рыбак
Источник задачи: Timus Top Coders: Second Challenge