Темы
    Информатика(2656 задач)
---> 61 задач <---
Источники --> Личные олимпиады --> Украинские олимпиады
    1999(3 задач)
    2000(5 задач)
    2001(4 задач)
    2002(7 задач)
    2003(3 задач)
    2004(6 задач)
    2005(5 задач)
    2006(6 задач)
    2007(6 задач)
    2008(5 задач)
    2009(6 задач)
    2010(0 задач)
    2011(0 задач)
    2012(0 задач)
    2013(0 задач)
    2016(5 задач)
Страница: << 7 8 9 10 11 12 13 Отображать по:
#113254
  
Источники: [ Личные олимпиады, Украинские олимпиады, 2016, Раздели массив ]
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Лавруша~--- добросовестный ученик, который мечтает стать программистом. На последнем уроке информатики его любимая учительница предложила ему решить такую задачу.

Лавруше дана последовательность натуральных чисел \(a_1,\ldots, a_n\). Ему нужно разделить последовательность чисел \(1,2,3, \ldots, n\) на две последовательности \(b_1, \ldots, b_m\) и \(c_1, \ldots, c_k\) таким образом, чтобы:

1. Каждое натуральное число \(1 \le r \le n\) было элементом ровно одной из последовательностей \(b\) или \(c\).

2. Для каждой пары индексов \(1 \le i, j \le m, i \ne j\) числа \(a_{b_i}\) и \(a_{b_j}\) были взаимно простыми. Взаимно простыми называются числа, наибольший общий делитель которых равен единице.

3. Для каждой пары индексов \(1 \le i, j \le k, i \ne j\) числа \(a_{c_i}\) и \(a_{c_j}\) были взаимно простыми.

Разбиение последовательности может быть неоднозначно. Поэтому учительница попросила Лаврушу найти такое разбиение, чтобы оно максимизировало количество элементов в последовательности \(b_i\). Если существует несколько разбиений, которые максимизируют количество элементов в последовательности \(b_i\), то нужно найти среди них такое, чтобы последовательность \(b_i\) была лексикографически наименьшей.

Будем говорить, что последовательность \(q_1, q_2, \ldots, q_W\) является лексикографически меньше последовательности \(p_1, p_2, \ldots, p_W\), если существует такое \(i\), что \(q_i < p_i\), а для произвольного \(j < i\) выполняется \(p_j = q_j\).

Напишите программу, которая для заданной последовательности чисел \(a\) найдет оптимальное разбиение последовательности цифр \(1,2,3, \ldots, n\) на две последовательности \(b_1, \ldots, b_m\) и \(c_1, \ldots, c_k\).

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

В первой строке входного файла записано число \(z\) (\(1 \le z \le 3\))~--- количество примеров тестовых входных данных (учительница несколько раз предлагала Лавруше решить эту задачу для различных примеров входных данных). Далее приводится \(z\) примеров тестовых входных данных в таком формате: в первой строке входных данных содержится число \(n\) (\(1 \le n \le 100\,000\))~--- количество элементов в последовательности \(a\). В следующей строке записано \(n\) чисел, разделенных единичными пробелами,~--- элементы последовательности \(a\) (\(1 \le a_i \le 2 \times 10^6\)).

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

Для каждого примера тестовых входных данных выведите в выходной файл в одной строке число \(m\)~--- количество элементов в последовательности \(b\), а во втором~--- \(m\) натуральных чисел в порядке возрастания номера элементов последовательности \(a\), вошедшие в последовательности \(b\). Если так случится, что учительница ошиблась, и не существует ни одного разбиения последовательности \(a\), то выведите в единственной строке \(-1\).

Система оценки

Тесты состоят из четырёх групп:

1. \(n \le 15, 1 \le a_i \le 2 \times 10^6\) (\(24\) балла).

2. \(n \le 1000, 1 \le a_i \le 2 \times 10^6\) (\(24\) балла).

3. \(n \le 20\,000, 1 \le a_i \le 2 \times 10^6\) (\(30\) баллов).

4. \(n \le 100\,000, 1 \le a_i \le 2 \times 10^6\) (\(22\) балла).

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

Страница: << 7 8 9 10 11 12 13 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест