E. 在线排序

    传统题 1000ms 256MiB

在线排序

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

题目描述

小 A 想要生成一个数列!

目前他已有 nn 个整数 a1∼ana_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 个整数,即 a1∼ana_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 16,1+2+3+4+4+9+9+16=481+2+3+4+4+9+9+16=48,所以输出 48%998244353=4848\%998244353 = 48

数据规模与约定

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

  • 子任务 1(25 分):1≤n,m≤20001\le n,m\le 2000。
  • 子任务 2(25 分):1≤n,m≤1041\le n,m\le 10^4。
  • 测试点 3(25 分):1≤n,m≤1061\le n,m\le 10^6。
  • 测试点 4(25 分):n=1n=1,1≤m≤10121\le m\le 10^{12}

周末欢乐赛 - 重现

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