AT_scpc2026_div2_l ChannelTalk Workflow

题目描述

/ / > ChannelTalk 是一款集成了实时客户沟通功能的全能型 AI 通讯工具,提供了工作流功能,任何人都可以轻松创建聊天机器人。使用 ChannelTalk Workflow,你可以像搭积木一样,根据客户情况灵活组合触发器和动作,实现从咨询开始到结束的全流程自动化。此外,还可以将常用功能制作成模块反复复用。 Ino 准备用 ChannelTalk Workflow 搭建聊天机器人,以处理 $N$ 种不同类型的问题。每个问题都被赋予一个从 $1$ 到 $N$ 的唯一编号。 Ino 想要在工作流中添加 $M$ 个模块,编号从 $0$ 到 $M-1$,添加顺序即为编号顺序。由于 Ino 无法管理太多模块,最多只能用 $2\,048$ 个模块。 当输入编号为 $x$ 的问题时,编号为 $i$ 的模块的工作方式如下: - 如果 $x = i$,则直接回答该问题,咨询结束。 - 如果 $x \neq i$,则如果 $x \le F_i$,将问题 $x$ 交给编号为 $L_i$ 的模块;如果 $x > F_i$,则交给编号为 $G_i$ 的模块。 所有问题收到时,都会首先输入到模块 $0$,每经过一个模块需要 $1$ 秒。也就是说,处理编号为 $i$ 的问题所需时间,就是包括模块 $0$ 和模块 $i$ 在内,整个结束前一共经过的模块数。如果某个模块被多次经过,则每次都计时。 Ino 希望不论输入的是编号 $1$ 到 $N$ 的哪个问题,咨询都**恰好**在 $K$ 秒结束。现给定问题类型数 $N$ 以及结束所需时间 $K$,请你设计模块总数 $M$,并为每个模块确定 $F_i$、$L_i$、$G_i$ 的值,使得对于任一 $1$ 到 $N$ 的问题,咨询总能“恰好”在 $K$ 秒后结束,且用到的模块不超过 $2\,048$ 个。**注意 $M$ 不需要最小化。** 如果不存在满足条件的方案,输出 $-1$。

输入格式

输入通过标准输入给出,格式如下: > $N\ K$

输出格式

第一行输出所用的模块总数 $M$,$(1 \leq M \leq 2\,048)$。 接下来 $M$ 行,每行输出三个整数 $F_i$、$L_i$、$G_i$,代表编号为 $i$ 的模块。$(0 \leq F_i \leq N;\ 0 \leq L_i, G_i < M)$ 如果不存在可行解,输出 `-1`。

说明/提示

### 数据范围 - $2 \leq K \leq N \leq 1\,000$ - 所有输入均为整数。 由 ChatGPT 5 翻译