#P15809. [中国国家队2025年林芝集训]斯芬克斯的谜题

    ID: 15020 传统题 1000ms 1024MiB 尝试: 3 已通过: 1 难度: 10 上传者: 标签>数学生成函数数据结构算法基础贪心模拟CF3000

[中国国家队2025年林芝集训]斯芬克斯的谜题

题目描述

斯芬克斯为你准备了一个谜题。

斯芬克斯手中有一个不含零的可重集 AAAA 的所有子集共有 2A2^{|A|} 个,这些子集的元素和构成一个可重集 BB

可重集 BB 被压缩表示成若干个二元组 (xi,yi)(x_i,y_i),表示元素 xix_iBB 中出现了 yiy_i 次。

坏心思的斯芬克斯只把最后的这些二元组 (xi,yi)(x_i,y_i) 交给了你。

你发现,能够根据这些信息还原出的可重集 AA 的本质不同方案可能有很多。现在你需要求出:

  1. 可以还原出的 AA 的本质不同方案数,对 998244353998244353 取模;
  2. 字典序最小的可还原可重集 AA

保证对于给定的二元组,一定存在至少一个合法的 AA

两个可重集 A,BA,B 被称为本质不同,当且仅当存在某个元素,它在两个可重集中的出现次数不同。

对于可重集的字典序比较,先将其中元素从小到大排序,得到一个序列,然后按普通序列字典序比较。

输入格式

第一行包含一个正整数 nn,表示二元组数量。

接下来 nn 行,每行包含两个整数 xi,yix_i,y_i,表示给定的二元组:元素 xix_i 出现了 yiy_i 次。

输出格式

第一行输出本质不同的方案数对 998244353998244353 取模后的结果。

第二行输出一个整数 LL,表示字典序最小的可重集 AA 的长度。

第三行输出 LL 个整数,表示字典序最小的可重集 AA 的内容。元素应当按照从小到大的顺序输出。

注意:如果你对于所有数据第一行的输出均正确,可以获得该测试点 25%25\% 的分数。但是如果只想获得这一部分分,也必须输出格式合法。第一行错误则不得分。

数据范围

对于所有数据,保证:

  • 1n1051\le n\le 10^5
  • 1013xi1013-10^{13}\le x_i\le 10^{13}
  • 1yi10131\le y_i\le 10^{13}
  • 所有 xix_i 互不相同;
  • 一定存在至少一个合法的可重集 AA

子任务

子任务编号 分数 特殊限制
1 16 n10n\le 10
2 8 xi0x_i\ge 0
3 32 n100n\le 100
4 44 无特殊限制

样例 1

输入

3
0 1
1 2
2 1

输出

1
2
1 1

样例 2

输入

5
-2 1
-1 2
0 2
1 2
2 1

输出

2
3
-2 1 1

样例解释

样例 11 的合法可重集 AA{1,1}\{1,1\}

样例 22 的合法可重集 AA{2,1,1}\{-2,1,1\}{1,1,2}\{-1,-1,2\}