P6785 「EZEC-3」排列

题目描述

pigstd 有一堆数,他想在这么多数中选出若干个数排成一列,记为 $x_{1},x_{2},\cdots,x_{p}$($p$ 为数的个数)。 这一列数合法**当且仅当**满足以下条件: - $p \ge 2$。 - 令 $y_{i} = x_{i + 1} - x_{i}$(特别的,$y_{p}=x_{1}-x_{p}$),如果把 $y_{1}$ 到 $y_{p}$ 按 $y_1,y_2,\cdots,y_p$ 的顺序排成**一圈**,那么每两个相邻的数互为相反数且绝对值都为 $k$。 pigstd 想知道,在所有合法的数列中,所有在这个数列中的数之和**最大**是多少。

输入格式

第一行两个整数 $n,k$。 接下来 $n$ 行,每行两个整数 $a_{i},b_{i}$,表示 pigstd 有 $b_{i}$ 个 $a_{i}$。 **不保证 $a_{i}$ 互不相同,若有 $a_{i}$ 相同则累加其个数计算。**

输出格式

一行一个整数,表示在每一种排列中,所有在这个排列中的数的**最大**的和。 **若没有合法的排列,则只输出 $\texttt{NO}$。**

说明/提示

**【样例 1 说明】** 当 pigstd 的排列为:$0,3,0,3$ 或 $3,0,3,0$ 时,总和最大,为 $6$。 **【数据规模与约定】** 对于 $100\%$ 的数据,$1 \le n \le 10^6$,$0 \le k,a_{i} \le 10^6$,$1 \le b_{i} \le 10^6$。 **本题采用捆绑测试。** - Subtask 1(5 points):保证无合法的数列; - Subtask 2(15 points):$k = 0$; - Subtask 3(5 points):$n = 1$; - Subtask 4(5 points):$n = 2$; - Subtask 5(30 points):$n,k,a_i,b_i \le 10^3$; - Subtask 6(40 points):无特殊限制。