比赛 |
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;
}