记录编号 |
588852 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
艾姆易艾克斯 |
最终得分 |
100 |
用户昵称 |
小金 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.240 s |
提交时间 |
2024-07-01 17:23:08 |
内存使用 |
1.51 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
const long long m=1e9+7;
int n,ans;
long long s=1,cs;
map<int,int> b;
struct xl{
int a,b;
}x[100010];
bool cmp(xl c,xl d)
{
if(c.a!=d.a) return c.a<d.a;
else return c.b>d.b;
}
void q()
{
long long t=2;
while(cs>0)
{
if(cs%2==1)
{
s=s*t%m;
}
t=t*t%m;
cs=cs/2;
}
}
int main()
{
freopen("Mex.in","r",stdin);
freopen("Mex.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&x[i].a);
b[x[i].a]++;
}
for(int i=1;i<=n;i++)
{
scanf("%d",&x[i].b);
}
sort(x+1,x+n+1,cmp);
for(int i=1;i<=n;i++)
{
if(x[i].b>x[i].a)
{
b[x[i].a]--;
b[x[i].b]++;
}
}
for(int i=0;;i++)
{
if(b[i]==0)
{
ans=i;
break;
}
}
/*for(int i=1;i<=n;i++)
{
printf("%d %d\n",x[i].a,x[i].b);
}*/
for(int i=1;i<=n;i++)
{
if(x[i].a!=ans&&x[i].b!=ans)
{
cs++;
}
}
q();
printf("%d %lld",ans,s);
return 0;
}