#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:卡片游戏
猜你喜欢
转载自blog.csdn.net/qq_34016712/article/details/80040247
今日推荐
周排行