#P14556. [ROI 2013 Day2] 星际航程

    ID: 14218 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>2013Special JudgeROI(俄罗斯)

[ROI 2013 Day2] 星际航程

题目描述

一支远征队准备乘坐新一代宇宙飞船启程。计划依次访问恒星系中的 NN 颗行星——从地球到胜利星。行星按访问顺序编号为 11NN,地球编号为 11,胜利星编号为 NN

对于行星间的飞行,飞船可以使用恒星系中存在的任何燃料类型。在远征开始前,飞船位于地球,并且飞船的燃料箱是空的。现有燃料类型用整数编号,在编号为 ii 的行星上只能加注类型为 aia_i 的燃料。访问第 ii 颗行星时,可以清空燃料箱中已有的燃料,然后加满类型为 aia_i 的燃料。

每颗行星上的加油站设置使得,加注的燃料量恰好足够飞行到下一颗具有相同燃料类型的行星。如果后续没有该类型的燃料,则无法在该行星上加注。换句话说,在第 ii 颗行星加注后,燃料足够访问从第 (i+1)(i + 1) 颗到第 jj 颗行星(包含),其中 jj 是满足 j>ij > iaj=aia_j = a_i 的最小编号行星。为了继续远征至第 jj 颗行星之后,飞船需要在这些行星中的某一颗再次加注。

需要编写一个程序,根据给定的行星燃料类型,确定远征所需的最小加注次数。

输入格式

输入文件的第一行写有数字 NN2N300,0002 \leqslant N \leqslant 300,000)——行星的数量。

输入文件的第二行写有 NN 个整数 a1,a2,,aNa_1, a_2, \ldots, a_N1ai300,0001 \leqslant a_i \leqslant 300,000)——行星上的燃料类型。

输出格式

输出文件的第一行输出唯一数字 KK——需要执行的最小加注次数。

第二行输出 KK 个数字,以空格分隔——需要加注的行星编号。行星编号按加注时间顺序输出。

如果存在多个具有最小加注次数的解决方案,输出其中任意一个。如果无解,输出数字 00

7
1 3 2 1 3 2 3
3
1 3 5
7
4 3 2 4 3 2 1
0

提示

评分

本题包含两个子任务。每个子任务的评分使用独立的测试组。仅当通过该组所有测试时,子任务的得分才会被计入。

子任务 1

N3000N \le 3000。该子任务分值为 5050 分。

子任务 2

N300,000N \le 300,000。该子任务分值为 5050 分。