#P6498. [COCI2016-2017#2] Zamjene
[COCI2016-2017#2] Zamjene
题目背景
警告:滥用本题评测将被封号。
题目描述
Dominik 构造了一个含有 个元素的数组 ,和对其排序得到的数组 。
此外,他还定义了「可交换集」。若无序数对 属于「可交换集」,则他可以交换 的位置。『通过「可交换集」』,即为通过若干次这样的交换。
现有四种操作:
-
操作 :
格式:
1 a b
。交换 的位置(不受「可交换集」限制)。
-
操作 :
格式:
2 a b
。将无序数对 加入「可交换集」。
-
操作 :
格式:
3
。判断能否通过「可交换集」完成对数组 的排序。
-
操作 :
格式:
4
。若数组 中的第 个元素能通过「可交换集」移至第 位,则称 是相连的。其中 可能等于 。
将所有与 相连的 构成的集合称作 的「云」。若一朵「云」能通过「可交换集」使得「云」中任意的 满足 ,则称这朵「云」是「祥云」。
计算有多少组无序数对 满足:
- 且 。
- 不是相连的。
- 的「云」与 的「云」均不是「祥云」。
- 将无序数对 加入「可交换集」后, 的「云」变为「祥云」。
请你帮助 Dominik 完成这些操作。
输入格式
第一行两个整数 ,表示数组 中元素的个数和操作次数。
第二行 个整数 。
接下来 行按以下格式给出:
-
一个整数 ,表示操作的类型。
-
若 为 或 ,接下来给出两个不同的整数 。
输出格式
-
对于每一次操作 :
若能通过「可交换集」完成对数组 的排序,输出一行
DA
。否则,输出一行
NE
。 -
对于每一次操作 :
输出一行,一个整数,表示满足条件的无序数对 组数。
3 5
1 3 2
4
3
2 2 3
4
3
1
NE
0
DA
5 5
4 2 1 4 4
3
4
1 1 3
3
4
NE
1
DA
0
4 10
2 1 4 3
3
4
1 1 2
3
4
2 2 3
2 1 2
4
2 3 4
3
NE
2
NE
1
3
DA
提示
样例 1 解释
- 第一次操作:仅有无序数对 满足要求。
- 第二次操作:不能通过「可交换集」完成对数组 的排序。
- 第三次操作:将无序数对 加入「可交换集」。
- 第四次操作:不存在满足要求的无序数对。
- 第五次操作:交换 ,即可通过「可交换集」完成对数组 的排序。
数据规模与约定
对于 的数据,,,, 且 。
说明
题目译自 COCI2016-2017 CONTEST #2 T5 Zamjene。