From 32b924e538d2624bf348d905e3dd6be1d493032c Mon Sep 17 00:00:00 2001 From: hao14293 Date: Thu, 1 Aug 2019 19:20:30 +0800 Subject: [PATCH] =?UTF-8?q?Create=201153=20Decode=20Registration=20Card=20?= =?UTF-8?q?of=20PAT=20(25=20=E5=88=86).cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ecode Registration Card of PAT (25 分).cpp | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 PAT/PAT-A/CPP/1153 Decode Registration Card of PAT (25 分).cpp diff --git a/PAT/PAT-A/CPP/1153 Decode Registration Card of PAT (25 分).cpp b/PAT/PAT-A/CPP/1153 Decode Registration Card of PAT (25 分).cpp new file mode 100644 index 0000000..6a8c14f --- /dev/null +++ b/PAT/PAT-A/CPP/1153 Decode Registration Card of PAT (25 分).cpp @@ -0,0 +1,78 @@ +#include +#include +#include +#include +using namespace std; +struct stu{ + string id; + int sco; +}; +struct site{ + string siteId; + int cnt; +}; +bool cmp1(stu a, stu b) { + return a.sco == b.sco ? a.id < b.id : a.sco > b.sco; +} +bool cmp2(site a, site b) { + return a.cnt == b.cnt ? a.siteId < b.siteId : a.cnt > b.cnt; +} + +int main(){ + int n, k; + cin >> n >> k; + vector v(n); + for(int i = 0; i < n; i++) + cin >> v[i].id >> v[i].sco; + for(int i = 1; i <= k; i++){ + int num; + cin >> num; + if(num == 1){ + string level; + cin >> level; + printf("Case %d: %d %s\n", i, num, level.c_str()); + vector ans; + for(int j = 0; j < n; j++){ + if(v[j].id[0] == level[0]) + ans.push_back(v[j]); + } + sort(ans.begin(), ans.end(), cmp1); + for(int j = 0; j < ans.size(); j++) + printf("%s %d\n", ans[j].id.c_str(), ans[j].sco); + if(ans.size() == 0) printf("NA\n"); + }else if(num == 2){ + int cnt = 0, sum = 0; + int siteId; + cin >> siteId; + printf("Case %d: %d %d\n", i, num, siteId); + vector ans; + for(int j = 0; j < n; j++){ + if(v[j].id.substr(1, 3) == to_string(siteId)){ + cnt++; + sum += v[j].sco; + } + } + if(cnt != 0) printf("%d %d\n", cnt, sum); + else printf("NA\n"); + }else if(num == 3){ + string data; + cin >> data; + printf("Case %d: %d %s\n", i, num, data.c_str()); + vector ans; + unordered_map m; + for(int j = 0; j < n; j++){ + if(v[j].id.substr(4, 6) == data){ + string tt = v[j].id.substr(1, 3); + m[tt]++; + } + } + for(auto it : m) + ans.push_back({it.first, it.second}); + sort(ans.begin(), ans.end(), cmp2); + for(int j = 0; j < ans.size(); j++) + printf("%s %d\n", ans[j].siteId.c_str(), ans[j].cnt); + if(ans.size() == 0) printf("NA\n"); + } + } + return 0; +}