#include<bits/stdc++.h>
#include <assert.h>
using namespace std;
const int maxn = 1e5+11;
int a[maxn];
int b[maxn];
int cnt[maxn];
int main(){
int n;
cin>>n;
memset(cnt,0,sizeof(cnt));
for(int i=0;i<n;i++){
cin>>a[i];
cnt[a[i]]++;
}
int ans=0;
for(int i=1;i<=maxn;i++){
if(!cnt[i]){
ans=i;
break;
}
}
int sans=0;
for(int i=ans+1;i<=maxn;i++){
if(!cnt[i]){
sans=i;
break;
}
}
int tmp=ans;
// cout<<ans<<endl;
for(int i=0;i<n;i++){
cin>>b[i];
if(b[i]==ans){
if(cnt[a[i]]>1||a[i]>sans){
tmp=max(tmp,sans);
}
else {
tmp=max(tmp,a[i]); //如果bi的数字都比ans小说明前面翻一张牌并不影响最后的答案,所以取max
}
}
}
cout<<tmp<<endl;
return 0;
}
题目链接
[Offer收割]编程练习赛56:卡片游戏
最新推荐文章于 2021-10-13 10:32:39 发布