记录编号 |
588863 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
艾姆易艾克斯 |
最终得分 |
100 |
用户昵称 |
wdsjl |
是否通过 |
通过 |
代码语言 |
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;
}