L2-019 悄悄关注

·   ·   ·   ·

  ·   ·


题目链接

L2-019 悄悄关注

分析

结构体排序,用 set 记录下来关注列表,之后每次读入名字的时候,判断 set 中有没有这个人,如果没有这个人就将这个人的信息保存到结构体数组 p 中,最后从大到小排序数组 p ,输出大于平均数的人即可

代码实现

#include <iostream>
#include <algorithm>
#include <set>

using namespace std;

set<string> s;

typedef struct
{
    string name;
    int v;
} peo;

bool camp(peo x, peo y)
{
    return x.name < y.name;
}

int main()
{
    int n, m;
    cin >> n;
    string in;
    for (int i = 0; i < n; ++i)
    {
        cin >> in;
        s.insert(in);
    }
    cin >> m;
    double sum = 0;
    peo *p = new peo[m];
    int cnt = 0;
    string nn;
    int va = 0;
    for (int i = 0; i < m; ++i)
    {
        cin >> nn >> va;
        sum += va;
        if (s.find(nn) == s.end())
        {
            p[cnt].name = nn;
            p[cnt++].v = va;
        }
    }
    sort(p, p + cnt, camp);
    sum /= m;
    int flag = 1;
    for (int i = 0; i < cnt; ++i)
    {
        if (p[i].v > sum)
        {
            flag = 0;
            cout << p[i].name << endl;
        }
    }
    if (flag)
        cout << "Bing Mei You" << endl;
    return 0;
}