#B. 希蒙的排名

    传统题 1000ms 256MiB

希蒙的排名

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

希蒙有一个神器,神器是一个长度为nn的排列pnp_n, 在使用一次神器后,可以使得所有人的排名发生变化,对于当前处于第ii名的人他会变成第pip_i名。

​希蒙十分开心,马上使用神器,想将自己变成第1名,所以他想计算一下自己要用多少次神器才能变成第一名。

但在他变成第一名后,其他同学都来让他变回原状。

希蒙很苦恼,他想写个程序计算一下自己到底要用多少次神器,才能让自己变成第1名。以及针对每个同学,在他变成第一名后,还要动用多少次神器才能让这位同学回到原来的排名上。你能帮它写这个程序吗?

输入格式

第一行输入两个整数nnxx,代表专业一共有nn个人,以及希蒙排名为xx

第二行输入nn个整数,分别代表p1p_1,p2p_2,p3p_3pnp_n

输出格式

第一行输出一个整数,表示希蒙在拿到神器后需要使用多少次才能让自己变成第1名。

第二行输出nn个整数,分别表示针对原排名为ii的同学,希蒙在让自己变成第1名后还要用多少次神器才能让他回到原位

样例

10 7
7 3 4 2 5 6 1 8 9 10
1
1 2 2 2 0 0 1 0 0 0

样例解释

初始综合排名为1,2,3,4,5,6,7,8,9,101,2,3,4,5,6,7,8,9,10,我们将对应初始排名的同学编号为其排名。

在使用一次神器后,新的综合排名为7,3,4,2,5,6,1,8,9,107,3,4,2,5,6,1,8,9,10

此时希蒙变成了第一名,故输出答案1

对于1,71,7来说,还需要使用1次神器来回到自己一开始的位置。

对于2,3,42,3,4来说,还需要使用2次神器来回到自己一开始的位置。

对于5,6,8,9,105,6,8,9,10来说,他们就在原位,所以不需要使用神器来回到自己一开始的位置。

数据范围

10<=n<=210510<= n <=2*10^5

1<=pi<=n1<= p_i <=n

n/2<=x<=nn/2<= x <=n

保证pp是一个排列,也就是pp中元素两两不同

数据保证希蒙可以变成第1名。

暑期集训入营算法编程题目

未参加
状态
已结束
规则
IOI
题目
4
开始于
2023-7-11 17:00
结束于
2023-7-11 18:30
持续时间
1.5 小时
主持人
参赛人数
80