PAT-練習集-L2-019. 悄悄關注
阿新 • • 發佈:2019-02-03
//傳送門: https://www.patest.cn/contests/gplt/L2-019 #include <queue> #include <functional> #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <stack> #include <vector> #include <set> #include <map> #include <string> #include <cmath> #include <cstdlib> #include <ctime> #include <assert.h> using namespace std; /*題意: 記錄被點讚的名單列表, 統計所有點贊數並求平均數, 遍歷點讚的名單列表, 如果該人的點贊數大於平均數且不在關注名單中, 則用set記錄該人名。 用set自動實現字典序排列。 */ #define N 100005 #define M 105 struct node { string s; int num; }no[10005]; //記錄名單 map<string,int>mp; //記錄關注的人 set<string>se; //記錄答案 int main() { int n; string s; scanf("%d",&n); for(int i=0;i<n;i++){ cin>>s; mp[s]++; } scanf("%d",&n); int sum = 0; for(int i=0;i<n;i++){ cin>>no[i].s; cin>>no[i].num; sum += no[i].num; } double avg = sum * 1. / n; //計算平均數 for(int i=0;i<n;i++){ if(mp[no[i].s]) continue; //如果在關注名單中則跳過 if(no[i].num<avg) continue;//如果小於平均數則跳過 se.insert(no[i].s); //符合要求的答案,插入set中 } if(se.size()==0) printf("Bing Mei You"); //沒有符合要求的人名 else{ set<string>::iterator it; //輸出set中記錄的資料 for(it=se.begin(); it!=se.end();it++){ cout<<*it<<endl; } } return 0; }