CF57B Martian Architecture

题目描述

兔子 Chris 发现了古老的火星文明遗迹。这位勇敢的天文学家通过小型望远镜观察到了一件建筑杰作——“通往太阳之路”。该建筑建立在相同尺寸的立方体石块上。道路的地基将整个“道路”分为了若干单元格,每个单元格恰好能容纳一个立方体石块。因此,每个单元格都可以分配一个坐标。想要成为部落的领袖,火星人需要在给定的地基上用这些立方体石块筑起“通往太阳之路”的阶梯。 阶梯的描述包括初始坐标处的石块数,以及阶梯起点和终点的坐标。在阶梯坐标递增的每个后续单元格里,放置的立方体石块比前一个单元格多一块。需要注意的是,如果该单元格原本就有石块,那么这些石块在此过程中不计入,仅在其上再构建阶梯。换句话说,阶梯的起点为 $l$,终点为 $r$,初始单元格放置 $x$ 块石头,则在 $l$ 号单元格新放入 $x$ 块石头,在 $l+1$ 号新放入 $x+1$ 块石头,以此类推,在 $r$ 号新放入 $x+r-l$ 块石头。 Chris 找到了一份古老的手稿,其中描述了所有阶梯的建造情况。现在他希望对照这份记录,确认自己真的找到了“通往太阳之路”。为此,他选择了若干道路单元格,并统计了它们在火星历史上累计堆积的立方体石块总数,然后请你根据手稿算出这些单元格的理想石块总数。

输入格式

第一行包含三个以空格分隔的整数:$n, m, k$($1 \leq n,m \leq 10^{5}, 1 \leq k \leq \min(n, 100)$),分别表示单元格总数、“通往太阳之路”阶梯个数和询问的单元格数。 接下来 $m$ 行,每行给出三个空格分隔的整数:$a_{i}, b_{i}, c_{i}$($1 \leq a_{i} \leq b_{i} \leq n, 1 \leq c_{i} \leq 1000$),分别表示某一阶梯的起点、终点及初始单元格的石块数。 最后一行包含 $k$ 个不同的以空格分隔的整数 $b_{i}$。这些数均在 $1$ 到 $n$ 之间,表示 Chris 感兴趣的单元格编号。

输出格式

输出一个整数,为 Chris 感兴趣的所有单元格总共应该累积的石块数。 请不要在 C++ 中使用 `%lld` 读写 64 位整数,建议使用 `cin`(或者 `%I64d`)。

说明/提示

由 ChatGPT 5 翻译