#6810. 班级卫生评分系统

班级卫生评分系统

题目背景

新学期开始了,班主任李老师决定建立一个更加公平公正的班级卫生评分系统。班级共有 nn 个卫生小组,每天会对每个小组的卫生情况进行打分。为了鼓励大家保持良好的卫生习惯,李老师制定了一系列评分规则和奖励机制。

题目描述

班级共有 nn 个卫生小组,编号从 11nn。初始时,每个小组的基础分为 100100 分。接下来会进行 mm 次操作,操作分为以下三种类型:

  1. 区间加分:给编号从 llrr 的所有小组,每个小组加 kk 分。
  2. 区间扣分:给编号从 llrr 的所有小组,每个小组扣 kk 分。注意:扣分后小组分数不能低于 00 分,如果扣分会导致分数低于 00,则该小组分数变为 00
  3. 查询统计:查询编号从 llrr 的所有小组中:
    • 最高分是多少
    • 最低分是多少
    • 平均分是多少(保留两位小数)
    • 分数大于等于 9090 分的小组数量(优秀小组数)

请你帮助李老师实现这个评分系统,正确处理所有操作并输出查询结果。

输入格式

第一行包含两个正整数 nnmm,分别表示卫生小组的数量和操作的次数。

接下来 mm 行,每行描述一个操作:

  • 如果是区间加分操作,格式为:1 l r k
  • 如果是区间扣分操作,格式为:2 l r k
  • 如果是查询统计操作,格式为:3 l r

输出格式

对于每个查询统计操作,输出一行包含四个数,用空格隔开:

  • 最高分
  • 最低分
  • 平均分(保留两位小数)
  • 优秀小组数

样例输入 #1

5 6
1 2 4 5
2 1 3 10
3 1 5
1 1 5 8
2 3 5 15
3 2 4

样例输出 #1

105 90 97.00 4
103 88 96.33 2

样例解释 #1

初始分数:[100, 100, 100, 100, 100]

操作1:给2-4组各加5分 → [100, 105, 105, 105, 100]

操作2:给1-3组各扣10分 → [90, 95, 95, 105, 100]

操作3:查询1-5组

  • 最高分:105
  • 最低分:90
  • 平均分:(90+95+95+105+100)/5 = 485/5 = 97.00
  • 优秀小组数:5个(全部≥90)

操作4:给1-5组各加8分 → [98, 103, 103, 113, 108]

操作5:给3-5组各扣15分 → [98, 103, 88, 98, 93]

操作6:查询2-4组

  • 最高分:103
  • 最低分:88
  • 平均分:(103+88+98)/3 = 289/3 ≈ 96.33
  • 优秀小组数:2个(103和98≥90,88<90)

数据范围与提示

  • 对于 30%30\% 的数据:1n,m1001 \le n, m \le 100
  • 对于 60%60\% 的数据:1n,m10001 \le n, m \le 1000
  • 对于 100%100\% 的数据:1n,m1041 \le n, m \le 10^41lrn1 \le l \le r \le n1k101 \le k \le 10