1129 Recommendation System + 堆
PAT题目链接:https://pintia.cn/problem-sets/994805342720868352/exam/problems/1478634991737962496
题解代码:
#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<unordered_map>
using namespace std;
#define MAX_N 100000
struct node {
string id;
int y, m, d;
node (string id, int y, int m, int d) : id(id), y(y), m(m), d(d) {}
// 年纪最大的排最前面
bool operator < (const node &a) const {
return (y != a.y) ? y < a.y : (m != a.m ? m < a.m : d < a.d);
}
};
int cnt;
set<node> s, all;
vector<node> v;
unordered_map<string, int> M;
void extact(string id) {
int year = stoi(id.substr(7,4));
int month = stoi(id.substr(11,2));
int day = stoi(id.substr(13,2));
M[id] = cnt++;
v.push_back(node(id, year, month, day));
all.insert(v[M[id]]);
}
int main() {
int n, m;
string id;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> id;
extact(id);
}
cin >> m;
for (int i = 0 ; i < m; i++) {
cin >> id;
if (M.find(id) != M.end()) {
s.insert(v[M[id]]);
} else {
extact(id);
}
}
if (s.size()) {
cout << s.size() << endl;
cout << s.begin()->id << endl;
} else {
cout << 0 << endl;
cout << all.begin()->id << endl;
}
return 0;
}

浙公网安备 33010602011771号