ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

1395. Pascal против C++. Версия 2

Ограничение времени: 1.0 секунды
Ограничение памяти: 4 МБ
Ограничение на язык: C, C++, Pascal

Вступление

Эта задача представляет собой усложнённый вариант задачи "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