分!分!分! 学生的命根

1.7k 词

题目描述

大家都知道,考研包括初试和复试,院校根据初试成绩和复试成绩综合决定是否录取你,具体的计算总成绩的方案是$(初试总成绩)*0.6+(复试成绩)*0.4$.这不Pmathticol还没玩够,又要开始准备万恶的复试了。不仅如此,对各科也还都有要求,所以院校会划定各科成绩线要求以及总分要求,只有过了各个单科分数线且总分足够才有资格进入复试。另外若是复试分数(满分为100分)不及格,则也不被录取。假定录取名额没有限制,只要符合上述条件的就被录取。我们知道初试科目包括数学,英语,政治,专业课。给定n个同学的各科成绩和复试成绩(假设每位同学都有复试成绩),以及报考院校的各个单科分数线和总分线。要你求最后被录取的名单以及他们的相关信息。

输入

只有一组测试数据,
第一行是报考院校的单科要求(英语,政治,数学,专业)和总分要求
接下来包括n名同学$(10<=n<=200)$,每行的格式如下:
姓名 英语 政治 数学 专业 复试成绩

输出

输出被录取的同学信息(姓名 初试成绩 复试成绩 总成绩 复试序号),并按照最终成绩从高到低排序。成绩相同的,按照名字字母顺序先后排序。所有的数据都用double型输入,最后结果初试和复试成绩四舍五入为整数输出,总成绩保留1位小数。

样例输入

1
2
3
4
5
6
7
8
50 50 80 80 320
LiMing 53 73 110 99 67
WangHao 51 69 100 90 83
Pan 48 69 119 92 64
FengDan 52 52 85 82 58
LiuDong 48 56 109 87 90
Peng 51 74 127 100 60
WeiQin 59 73 93 99 70

样例输出

1
2
3
Peng 352 60 235.2 1
LiMing 335 67 227.8 2
WeiQin 324 70 222.4 3

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<bits/stdc++.h>
using namespace std;
struct stu {
string s;
double a, b, c, d, e, f, g;
}k[50];
bool q(stu A, stu B) {
if (A.g != B.g) {
return A.g > B.g;
}
else {
return A.s < A.s;
}
}
int x, y, z, r, p, j, i = 0, t = 1;
int main() {
for (cin >> x >> y >> z >> r >> p; cin >> k[i].s >> k[i].a >> k[i].b >> k[i].c >> k[i].d >> k[i].e;)
{
k[i].f = k[i].a + k[i].b + k[i].c + k[i].d, k[i].g = k[i].f * 0.6 + k[i].e * 0.4;
if (k[i].a >= x && k[i].b >= y && k[i].c >= z && k[i].d >= r && k[i].f >= p)i++;
sort(k, k + i, q);
}
for (j = 0; j < i; j++)
cout << k[j].s.c_str() << fixed << setprecision(0) << " " << setprecision(0) << k[j].f << " " << setprecision(0) << k[j].e << " " << setprecision(1) << k[j].g << " " << t++ << endl;
return 0;
}