平行志愿

[PAT-A 1080]Graduate Admission

纵然是瞬间 提交于 2020-02-05 11:25:27
题目大意: 有N位考生,M所学校,每位考生都有K个志愿学校,每个学校也有招生人数限制。 给出每位学生的考试成绩GE GI,以及K个志愿学校的编号。 要求模拟录取招生的过程,并输出米格学校录取的考生编号(从小到大) 录取规则:(有点像高考的平行志愿) 1)先按考生总分(GE+GI)/2进行排名,总分相同的按照GE的大小,高的在前,若GE相同,则排名相同。 2)按排名先后来考虑每个考生最终录取的学校,每个考生,按照K个志愿的先后顺序,如果当前志愿的学校招生人数未达该校招生的总人数, 那么由该所学校录取他,并不再考虑后面的志愿。 如果当前志愿学校的已招生人数已经到达招生人数的总额度,但该校上一个录取的考生排名与该考生的排名相同,则此时可以破格录取。 除以上两种情况,均视为该志愿学校无法录取考生,转而考虑考生的下一个志愿学校。 如果考生所有志愿都无法被录取,则视为落榜。 思路: 1)根据题目中涉及的信息,定义两个结构体变量Student与School 其中Student中存储 学生的两门课总分(不用处理小数),排名,考生编号,以及所填报的K个学校的编号。 School中存储 学校招生的总额度,当前实际招生人数,已经接受的考生编号,最后一个招收的考生编号。 2)cmp函数,按照排名题目要求 3)对每位考生的每个志愿学校