比赛 2024暑期C班集训1 评测结果 AWAAAAAAAAAAAAAAAAAA
题目名称 艾姆易艾克斯 最终得分 95
用户昵称 wdsjl 运行时间 0.091 s
代码语言 C++ 内存使用 1.38 MiB
提交时间 2024-07-01 11:51:43
显示代码纯文本
#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);
    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;
       for(int i=1;i<=n;i++){
           if(q[i].a>minn){
               break;
           }
           if(q[i].a!=q[i].b){
//               minn=min(minn,q[i].a);
//               if(q[i].a<minn){
//                   minn=q[i].a;
//                   swap(q[i].a,q[i].b);
//               }
//               break;
//           }
           int bb=0; 
           int qq=i;
           while(q[qq+1].a==q[i].a)qq++;
           for(int j=i;j<=qq;j++){
               if(q[j].a==q[j].b){
                   bb=1;
//                   cout<<"Y"<<endl;
                   break;
               } 
           }
           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;
               }
           }
       }
   }
       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;
}