Logo
(追記) (追記ここまで)

21541번 - Звёздный путь 스페셜 저지다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB63240.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ドル$.

제한

  • $N \le 300,000円$

예제 입력 1

7
1 3 2 1 3 2 3

예제 출력 1

3
1 3 5

예제 입력 2

7
4 3 2 4 3 2 1

예제 출력 2

0

힌트

출처

Olympiad > Russian Olympiad in Informatics > Russian Olympiad in Informatics 2013 5번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /