原题:
小易是班级的英语课代表, 他开发了一款软件开处理他的工作。
小易的软件有一个神奇的功能,能够通过一个百分数来反应你的成绩在班上的位置。“成绩超过班级 …% 的同学”。
设这个百分数为 p,考了 s 分,则可以通过以下式子计算得出 p:
p = ( 分数不超过 s 的人数 - 1) 班级总人数
突然一天的英语考试之后,软件突然罢工了,这可忙坏了小易。成绩输入这些对于字写得又快又好的小易当然没有问题,但是计算这些百分数……这庞大的数据量吓坏了他。
于是他来找到你,希望他编一个程序模拟这个软件:给出班级人数 n,以及每个人的成绩,请求出某几位同学的百分数。
数据结构
vec映射:存放所有同学id以及成绩。
sort_vec数组:存放所有同学id以及成绩,然后根据学生成绩从小到大排序。
m映射:存放成绩以及成绩超过班级百分比。
生成答案:
vec映射保存原始同学的数据,方便根据同学id查询成绩。利用sort_vec数组对同学成绩进行排序。利用排好序的sort_vec数组计算每个成绩所对应的成绩超过班级百分比,存放到m映射中。
答案获取的过程
假设询问同学id。
- vec[id]获取同学成绩
- m[vec[id]]获取同学成绩所对应的成绩超过班级百分比,这就是答案
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
int cmp(