**
网易笔试之成绩
**
题意:一个班n个学生,有n个成绩,输入q个学生的编号,计算百分比(成绩小于该学生成绩的学生个数/学生总数)
思路:用一个data数组保存原始数据,用res数组保存排序后的数组,根据排序后的数组结合一个map计算每个成绩之前有多少个学生;
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> data(n);
vector<int> res(n);
map<int, int> m;
int num;
for (int i = 0; i < n; i++)
{
cin >> num;
data[i] = num;
res[i] = num;
}
sort(res.begin(), res.end());
int q;
cin >> q;
vector<int> result(q);
int index;
for (int i = 0; i < q; i++)
{
cin >> index;
result[i] = index;
}
for (int i = 0; i < n; i++)
{
if (m.find(res[i]) != m.end())//找到了
{
continue;
}
else
{
if (i == 0)
{
m[res[i]] = 0;
}
else
{
m[res[i]] = i;
}
}
}
for (int i = 0; i < q; i++)
{
double cur = (double)m[data[i]]/n;
cout << cur << endl;
}
return 0;
}