CF958C1 Encryption (easy)

题目描述

反叛间谍 Heidi 刚刚从帝国手中获得了死星的设计图,现在她正在逃往安全地带,并试图破解设计图的加密(当然这些设计图是加密的——帝国也许很邪恶,但并不愚蠢!)。加密有多层安全措施,第一层如下所示。 Heidi 面前的屏幕上显示着一个整数序列 $A$ 和一个正整数 $p$。她知道加密代码是一个数字 $S$,其定义如下: 定义 $X$ 的得分为 $X$ 所有元素之和对 $p$ 取模的结果。 Heidi 得到一个包含 $N$ 个整数的序列 $A$,以及一个整数 $p$。她需要将 $A$ 分成两部分,使得: - 每一部分都至少包含 $A$ 的一个元素,并且每一部分都由 $A$ 的连续元素组成。 - 两部分不重叠。 - 这两部分得分之和 $S$ 最大。这个 $S$ 就是加密代码。 请输出 $S$ 的最大值,即加密代码。

输入格式

第一行包含两个用空格分隔的整数 $N$ 和 $p$($2 \leq N \leq 100000$,$2 \leq p \leq 10000$)——表示 $A$ 的元素个数,以及用于计算得分的模数。 第二行包含 $N$ 个用空格分隔的整数,表示序列 $A$ 的元素。每个整数都在区间 $[1, 1000000]$ 内。

输出格式

输出一个整数 $S$,即题目中所述的最大得分。

说明/提示

在第一个样例中,若将输入序列分为 $(3,4)$ 和 $(7,2)$ 两部分,得分最大。总得分为 $((3+4)\bmod 5) + ((7+2)\bmod 5) = 2 + 4 = 6$。 在第二个样例中,若第一部分为前三个元素,第二部分为剩下的元素,则得分为 $((1+2+3)\bmod 4) + ((4+5+6+7)\bmod 4) = 2 + 2 = 4$。 由 ChatGPT 4.1 翻译