link : 4269. 校庆 - AcWing题库
用set存(或者换成高级一点的Hashtable) 考虑到效率 没有使用map
输出的身份证迭代规则:
第一个本校学生进来之后 跳入到状态二
Code 没有进行函数式优化 比较杂
string 支持大小于比较, 不再转型 直接使用
#include<iostream>
#include<algorithm>
#include<set>
#include<string>
#include<cstring>
using namespace std;
typedef long long ll;
set<string> t;
int main(){
int n;cin>>n;
string x;
for(int i=0;i<n;i++){
cin>>x;
t.insert(x);
}
cin>>n;
int cnt=0;
string ans="";
string age="";
bool ok1=0,ok2=0;
for(int i=0;i<n;i++){
cin>>x;
string it = x.substr(6,8);
if(t.count(x)) {cnt++;ok2=1;}
else {
if(ok1==1) continue;
}
if(age==""){
age=it;
ans=x;
}else{
if(ok1==0&&ok2==1){
age=it;
ans=x;
}else {
if(age>it){
age=it;
ans=x;
}
}
}
ok1=ok2;
}
cout<<cnt<<endl;
cout<<ans<<endl;
}