记录编号 588863 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 艾姆易艾克斯 最终得分 100
用户昵称 Gravatarwdsjl 是否通过 通过
代码语言 C++ 运行时间 0.113 s
提交时间 2024-07-01 17:56:25 内存使用 1.38 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

const int Mod = 1000000007;
const int N = 100000;
struct node{
    int a;
    int b;
}q[N];
int n,t[N],minn,r;
long long res;
bool cmp(node x,node y){
    return x.a<y.a;
}

int main(){
    freopen("Mex.in","r",stdin);
    freopen("Mex.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&q[i].a);
    for(int i=1;i<=n;i++)scanf("%d",&q[i].b);
    sort(q+1,q+1+n,cmp);
//    for(int i=1;i<=n;i++){
//        cout<<q[i].a<<" ";
//    }
//    cout<<endl;
    t[0]=-1;
    for(int i=1;i<=n;i++)t[i]=q[i].a;
    int boo=0;
       for(int i=1;i<=n;i++){
           if(t[i]-t[i-1]>1){
               minn=t[i-1]+1;
               boo=1;
               break;
           }
       }
       if(boo==0)minn=n;
//       cout<<"WWW"<<minn;
       for(int i=1;i<=n;i++){
           if(q[i].a>minn){
               break;
           }
//               minn=min(minn,q[i].a);
//               if(q[i].a<minn){
//                   minn=q[i].a;
//                   swap(q[i].a,q[i].b);
//               }
//               break;
//           }
//             cout<<"i:"<<i<<endl;
           int bb=0; 
           int qq=i;
           while(q[qq+1].a==q[i].a)qq++;
//           cout<<":::"<<i<<" "<<qq<<endl;
           for(int j=i;j<=qq;j++){
               if(q[j].a==q[j].b){
                   bb=1;
//                   cout<<"Y"<<endl;
                   break;
               } 
           }
//           if(i==4)cout<<bb;
//           cout<<"bb"<<bb<<endl; 
           if(bb==0){
               if(q[i].a<minn){ 
               minn=q[i].a;  
               for(int j=i;j<=qq;j++){
                   swap(q[j].a,q[j].b);
               }
               break;
               }else{
                   continue;
               }
           }else{
               i=qq;
               continue;
           }
       }
       for(int i=1;i<=n;i++){
           if(minn!=q[i].b)r++;
       }
       res=1;
       for(int i=1;i<=r;i++){
           res*=2;
           res%=Mod;
       }
       cout<<minn<<" "<<res;
    return 0;
}