#641. 班级积分批量修正

班级积分批量修正

班级积分批量修正

故事背景

学校举行了一次大型校园科技节,各个班级根据活动表现获得积分奖励。活动结束后,教务处发现部分项目的计分标准需要统一调整:有些项目要给参与班级统一加分,有些则需要统一扣分。

每次调整都会影响一段连续编号的班级,例如“给第 ll 班到第 rr 班每班加 vv 分”(vv 可以为负,表示扣分)。经过多轮集中修正后,教务处想知道最终哪一个班级的总积分最高,以及这个最高积分是多少。

请你帮助统计最终结果。

题目描述

给定一个长度为 nn 的整数数组 aa,表示 nn 个班级的初始积分。接下来有 qq 次批量修正操作。每次操作给出三个整数 l,r,vl,r,v,表示对所有满足 lirl \le i \le r 的班级,将其积分 aia_i 同时增加 vv

所有操作按顺序依次作用在同一份积分数组上。请你输出最终积分最高的那一个班级编号以及对应的积分值;如果有多个班级达到最高积分,输出编号最小的那个。

输入格式

  • 第一行包含两个整数 n,qn,q,表示班级数量和批量修正次数。
  • 第二行包含 nn 个整数,表示数组 aa 的初始积分。
  • 接下来 qq 行,每行包含三个整数 l,r,vl,r,v,表示一次区间修正操作。

保证 1lrn1 \le l \le r \le n

输出格式

输出一行,包含两个整数:

  • 第一个整数为所有班级中最终积分的最大值;
  • 第二个整数为达到该积分的班级中编号最小的那个班级编号(11 基)。

输入输出样例 #1

输入 #1

5 3
10 20 30 40 50
2 4 5
1 3 -10
3 5 2

输出 #1

47 5

样例解释 #1

初始积分为 [10,20,30,40,50][10,20,30,40,50]

  1. 第一次操作,将 [2,4][2,4] 区间内每个班级加 55 分,变为 [10,25,35,45,50][10,25,35,45,50]
  2. 第二次操作,将 [1,3][1,3] 区间内每个班级减 1010 分,变为 [0,15,25,45,50][0,15,25,45,50]
  3. 第三次操作,将 [3,5][3,5] 区间内每个班级加 22 分,最终变为 [0,15,27,47,52][0,15,27,47,52]

此时最高分为 5252,由 55 班获得,因此输出:

52 5

数据范围

对所有数据,保证:

  • 1n,q2×1051 \le n,q \le 2 \times 10^5
  • 109ai109-10^9 \le a_i \le 10^9
  • 109v109-10^9 \le v \le 10^9
  • 所有中间结果与最终答案均在 6464 位有符号整数范围内。

要求程序在合理时间内完成所有修正并输出答案。