#E. 在线排序

    传统题 1000ms 256MiB

在线排序

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

题目描述

小 A 想要生成一个数列!

目前他已有 nn 个整数 a1ana_1\sim a_n,他希望再添加 mm 个数到数列中,他会按照下面的方式一个一个地添加:

  • 先找到当前所有整数的中位数 midmid,然后添加 (mid×mid)%P(mid\times mid)\% P 到数列中。
  • PP 为一个已知的整数,%\% 为取余)。

最终小 A 会得到一个长度为 n+mn+m 的数列,如果输出这么大的数列太费时间了,因此他希望你告诉他所有数之和对 PP 取余后的值。

本题中位数的定义:对于 lenlen 个元素的序列,将其从小到大排列后,第 len+12\lfloor \frac{len+1}{2} \rfloor 个元素即中位数。 \lfloor\ \rfloor 的意思是下取整。

输入格式

第一行为空格隔开的两个整数 n,m,Pn,m,P
接下来一行 nn 个整数,即 a1ana_1\sim a_n

输出格式

一行一个整数,为”最终 n+mn+m 个数之和”对 PP 取余后的结果。

4 4 998244353
1 2 3 4
48 

样例 1 解释

  • 1 2 3 4 中位数为 2,新添加的数为 4
  • 1 2 3 4 4 中位数为 3,新添加的数为 9
  • 1 2 3 4 4 9 中位数为 3,新添加的数为 9
  • 1 2 3 4 4 9 9 中位数为 4,新添加的数为 16
  • 最终序列为:1 2 3 4 4 9 9 161+2+3+4+4+9+9+16=481+2+3+4+4+9+9+16=48,所以输出 48%998244353=4848\%998244353 = 48

数据规模与约定

对于所有数据,保证 1ai1061\le a_i\le 10^6P=998244353P=998244353

  • 子任务 1(25 分):1n,m20001\le n,m\le 2000
  • 子任务 2(25 分):1n,m1041\le n,m\le 10^4
  • 测试点 3(25 分):1n,m1061\le n,m\le 10^6
  • 测试点 4(25 分):n=1n=11m10121\le m\le 10^{12}

周末欢乐赛 - 重现

未参加
状态
已结束
规则
IOI
题目
5
开始于
2023-10-14 15:45
结束于
2023-10-14 18:15
持续时间
2.5 小时
主持人
参赛人数
4