#57244. 成绩录入

    ID: 57244 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>计蒜客赛事普及T1排序结构体魔扣OJ

成绩录入

暂无测试数据。

蒜头君所在的学习小组中共有 $n$ 个同学,每个同学都有一个编号,分别为 $1,2,\cdots,n$。今天蒜头君在学习小组中发起了一场测试,测试共有三部分。现在测试结束了,大家让蒜头君统计一下每个同学的分数。蒜头君首先将每个同学在本次测试中每部分的得分录入到成绩管理系统中,系统会自动计算出每个同学三部分成绩的总分。然后大家便可以在系统中查询到自己的分数情况。

不过粗心的蒜头君可能在录入成绩的时候会出错,所以同学们在成绩查询系统中查到分数后还会亲自核验一下,如果存在问题的话,蒜头君需要在成绩查询系统后台进行修改。

成绩查询系统的功能如下:

  1. 成绩查询系统是按照每个同学的编号区分每个同学。
  2. 分别输入某同学测试中三部分的成绩,可以自动算出该同学总成绩。
  3. 输入同学的编号后,可以重新输入该同学的测试中三部分的成绩,并且该同学以前的成绩作废。
  4. 输入同学的编号后,可以查看该同学的三部分成绩以及总成绩。
  5. 可以根据同学们总成绩的降序(从大到小)排名输出每位同学的编号,三部分成绩以及总成绩。

蒜头君已经录入好了成绩,接下来蒜头君会根据同学们的反馈依次向成绩查询系统中发出一些请求,请你根据不同的请求输出成绩查询系统做出对应的操作结果。

输入格式

输入第一行一个正整数 $n$,代表蒜头君所在的学习小组有 $n$ 个同学,编号为 $1,2,\cdots,n$。

接下来 $n$ 行,每行是以空格隔开三个非负整数 $score_1, score_2, score_3$。第 $i$ 行代表编号为 $i$ 的同学的三部分成绩,$score_1$ 代表第一部分的成绩,$score_2$ 代表第二部分的成绩,$score_3$ 代表第三部分的成绩。

接下来一行一个非负整数 $q$,代表蒜头君依次向成绩查询系统发出 $q$ 次操作的请求。

接下来 $q$ 行,每行代表一个操作请求,第 $i(1\leq i \leq q)$ 行代表第 $i$ 个操作请求。

每行第一个整数为 $op$ 代表操作请求类型。

  • 若 $op = 1$,该操作表示要修改某同学的成绩。需要输入一个 $1\sim n$ 范围内的正整数 $x$,表示该同学的编号,然后是以空格隔开的三个非负整数 $score_1, score_2, score_3$,代表该同学每部分新的成绩。
  • 若 $op = 2$,该操作表示要查询某同学的成绩。需要输入一个 $1\sim n$ 范围内的正整数 $x$,表示该同学的编号。
  • 若 $op = 3$,表示要查看按照总成绩降序排名后,每个同学的详细成绩信息。

输出格式

输出有若干行。

对于操作请求 $op = 2$,输出一行以空格隔开的四个非负整数,第一个数代表该同学第一部分的成绩,第二个数代表该同学第二部分的成绩,第三个数代表该同学第三部分的成绩,第四个数代表该同学的总成绩。

对于操作请求 $op = 3$,输出 $n$ 行,代表按照总成绩降序排名后,每个同学的详细成绩信息。第 $i$ 行,代表按照总成绩排名后名次为 $i$ 的同学的信息,每行五个以空格隔开的整数,第一个数为该同学的编号,第二个数代表该同学第一部分的成绩,第三个数代表该同学第二部分的成绩,第四个数代表该同学第三部分的成绩,第五个数代表该同学的总成绩。

对于排序规则:

  • 如果总成绩不同时,总成绩越大,排名越靠前。
  • 如果总成绩相同时,编号越小的同学,排名越靠前。

数据保证一定存在输出。

数据范围

$1 \leq n \leq 100, 0 \leq q \leq 100, 0 \leq score_1, score_2, score_3 \leq 100, 1 \leq op \leq 3, 1\leq x \leq n$。

5
88 59 52
85 3 82
18 67 22
1 41 98
76 75 68
2
1 1 85 32 73
3
5 76 75 68 219
1 85 32 73 190
2 85 3 82 170
4 1 41 98 140
3 18 67 22 107
4
26 54 55
60 21 37
28 15 43
48 73 0
4
1 4 45 44 53
2 2
1 2 95 45 66
3
60 21 37 118
2 95 45 66 206
4 45 44 53 142
1 26 54 55 135
3 28 15 43 86