Sort

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

Background

Day 1

MrPython:“能做出来这题的是 zak”

Day 2

MrPython:“%%% zak”

Description

对于一个长为 nn 的序列 AA,定义一次操作 CheckAndSwap(i,j)(1i,jn)\operatorname{CheckAndSwap}(i,j)(1\le i,j\le n) 为:

  1. 检查是否有 Ai>AjA_{i}\gt A_{j}
  2. 若是,交换 AiA_iAjA_j

现在,你有一个机器,可以在一个序列上对若干对不同位置,并行地进行 CheckAndSwap\operatorname{CheckAndSwap} 操作。

形式地说,你每次可以指定 mm 个有序二元对 (i1,j1),(i2,j2),,(im,jm)(i_1,j_1),(i_2,j_2),\dots,(i_m,j_m),且这 2m2m 个数互不相同,机器会同时进行 mmCheckAndSwap\operatorname{CheckAndSwap} 操作,第 xx 次操作为 CheckAndSwap(ix,jx)\operatorname{CheckAndSwap}(i_x,j_x),上述过程用时 11 个单位时间。

你希望用尽量少的时间对长为 NN 的序列排序。

Constraints and Subtasks

对于全部测试点,满足:

  • 1N1001 \leq N \leq 100

每个子任务的输入如下:

Subtask NN t1t_1 t2t_2 t3t_3 分数
11 88 2828 99 66 1010
22 1313 7878 1414 1010 1010
33 1616 120120 1717 1010
44 3232 496496 3333 1515 1010
55 5353 13781378 5454 2121 1010
66 6464 20162016 6565 1010
77 7373 26282628 7474 2828 1010
88 8282 33213321 8383 1010
99 9191 40954095 9292 2929 1010
1010 100100 49504950 101101 3030 1010

对于每个子任务,如果你的代码不正确,则获得 00 分。

否则,如果代码耗时 tt 单位时间,设这个子任务的评分参数为 t1,t2,t3t_1,t_2,t_3,那么你的分数为

$$f(t)= \begin{cases} 0 & t>t_1\\ 1+\frac{2}{t-t_2} & t_1\ge t>t_2\\ 3+\frac{7(t_2-t+1)}{t_2-t_3} & t_2\ge t>t_3\\ 10 & t_3\ge t \end{cases}\\ \text{score}(t)=\left\lfloor f(t)+0.5\right\rfloor $$

f(t)f(t) 四舍五入后的结果。


Input

输入内容从标准输入中给出,格式如下:

$ \boxed{\begin{aligned} & n {\quad} t_1 {\quad} t_2 {\quad} t_3 \end{aligned}} $

Output

首先输出一行一个非负整数 tt,表示你排序需要的时间。

接下来,若 t0t\ne 0,你需要按顺序输出 tt 组操作序列,对于每一组操作序列:

  • 先输出 mm,表示你要同时对 mm 对下标进行操作。

  • 接下来 mm 行,每行两个正整数 ix,jxi_x,j_x,表示对下标 ix,jxi_x,j_x 做操作。

Samples

4
3
2
1 2
3 4
2
1 3
2 4
1
2 3

以序列 3 1 4 2 为例:

  • 11 个单位时间内,对 (1,2),(3,4)(1,2),(3,4) 操作,序列变为 1 3 2 4
  • 22 个单位时间内,对 (1,3),(2,4)(1,3),(2,4) 操作,序列没有变化;
  • 33 个单位时间内,对 (2,3)(2,3) 操作,序列变为 1 2 3 4

可以验证,对于任何长为 44 的序列,可以经上述操作后排序。

Note

判定答案是 co-NP\text{co-NP} 的,因此 SPJ 只对部分序列检查你的答案是否能将其排序。

因此,也不保证赛时不会进行数据加强。

海西省理论职专校队选拔赛

未参加
状态
已结束
规则
IOI
题目
23
开始于
2025-4-8 8:30
结束于
2025-5-8 8:30
持续时间
720 小时
主持人
参赛人数
23