#include <bits/stdc++.h> using namespace std; // 对数以万计的考研试卷进行评分是一项艰巨的工作。设计一个尽可能公平的评价过程更加困难。一种方法是让每个考试问题分配给3位独立专家。如果他们对结果不一致,则邀请裁判做出最终决定。现在,您被要求编写一个程序来帮助这个过程。对于每个问题,都有一个满分P和一个容差T(<P)给出。评分规则如下: // · 一个问题首先被分配给2位专家,以获取G1和G2。如果差异在容差范围内,即|G1 - G2| ≤ T,则该问题的分数将是G1和G2的平均值。 // · 如果差异超过T,第3位专家将给出G3。 // · 如果G3与G1或G2中的任何一个都在容差范围内,但两者都不在,则该问题的分数将是G3和最接近分数的平均值。 // · 如果G3与G1和G2中的任何一个都在容差范围,则该问题的分数将是三个分数中的最大值。 // · 如果G3与G1、G2中的任何一个都在容差范围之内,则该问题的分数将是G3和G1、G2中最接近分数的平均值。 // 每个输入文件可以包含多个测试用例。每个测试用例占用一行,包含六个正整数:P、T、G1、G2、G3和GJ,如问题中所述。可以保证所有成绩都是有效的,即在区间【0, P】内。 // 对于每个测试用例,您应该在一行中输出问题的最终分数。答案必须精确到小数点后一位。 int main() { int p, t, g1, g2, g3, gj; while (cin >> p >> t >> g1 >> g2 >> g3 >> gj) { // 注意 while 处理多个 case double ans = 0; if (abs(g1 - g2) <= t) { ans = (g1 + g2) / 2.0; } else { if (abs(g3 - g1) <= t && abs(g3 - g2) <= t) { ans = max(g3, max(g1, g2)); } else { if (abs(g3 - g1) <= t) { ans = (g1 + g3) / 2.0; } else { ans = (g2 + g3) / 2.0; } } } printf("%.1f\n",ans); } return 0; } // 64 位输出请用 printf("%lld")