| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 6 | 3 | 2 | 40.000% |
Экспедиция готовится отправиться в путь на космическом корабле нового поколения. Планируется последовательно посетить $N$ планет звёздной системы --- от планеты Земля до планеты Победа. Планеты пронумерованы от 1ドル$ до $N$ в порядке их посещения, Земля имеет номер 1ドル,ドル а Победа --- номер $N$.
Для перелёта между планетами корабль может использовать любой тип топлива, существующий в звёздной системе. Перед началом экспедиции корабль находится на планете Земля, и бак корабля пуст. Существующие типы топлива пронумерованы целыми числами, на планете с номером $i$ можно заправиться только топливом типа $a_i$. При посещении $i$-й планеты можно заправиться, полностью освободив бак от имеющегося топлива и заполнив его топливом типа $a_i$.
На каждой планете станция заправки устроена таким образом, что в бак заправляется ровно столько топлива, сколько потребуется для перелёта до следующей планеты с топливом такого же типа. Если далее такой тип топлива не встречается, заправляться на этой планете невозможно. Иначе говоря, после заправки на $i$-й планете топлива хватит для посещения планет от $(i + 1)$-й до $j$-й включительно, где $j$ --- минимальный номер планеты, такой что $j > i$ и $a_j = a_i$. Для продолжения экспедиции дальше $j$-й планеты корабль необходимо снова заправить на одной из этих планет.
Требуется написать программу, которая по заданным типам топлива на планетах определяет минимальное количество заправок, требуемых для экспедиции.
В первой строке входного файла записано число $N$ (2ドル \leqslant N \leqslant 300,000円$) --- количество планет.
Во второй строке входного файла записано $N$ целых чисел $a_1, a_2, \ldots, a_N$ (1ドル \leqslant a_i \leqslant 300,000円$) --- типы топлива на планетах.
В первой строке выходного файла выведите единственное число $K$ --- минимальное количество заправок, которые нужно произвести.
Во второй строке выведите $K$ чисел, разделённых пробелами, --- номера планет, на которых требуется заправиться. Номера планет требуется выводить в порядке времени заправок.
Если решений с минимальным количеством заправок несколько, выведите любое из них. Если решения не существует, выведите число 0ドル$.
7 1 3 2 1 3 2 3
3 1 3 5
7 4 3 2 4 3 2 1
0