比赛 |
2024暑期C班集训1 |
评测结果 |
WWAAAAWWWWWWWWWWWWWW |
题目名称 |
艾姆易艾克斯 |
最终得分 |
20 |
用户昵称 |
123 |
运行时间 |
0.329 s |
代码语言 |
C++ |
内存使用 |
1.48 MiB |
提交时间 |
2024-07-01 11:30:05 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=100010;
const long long INF=1e9+7;
map <int,int> flaga,flagb;
int a[N],b[N];
int n,mi=0,cnt=0;
void dfs(int step)
{
if (step==n+1)
{
for (int i=0;i<mi;i++)
{
if (flaga[i]==0)
{
return ;
}
}
if (flaga[mi])
{
return ;
}
else
{
cnt++;
return ;
}
}
flaga[a[step]]--;
flaga[b[step]]++;
flagb[a[step]]++;
flagb[b[step]]--;
dfs(step+1);
flaga[a[step]]++;
flaga[b[step]]--;
flagb[a[step]]--;
flagb[b[step]]++;
dfs(step+1);
}
void find()
{
for (int i=1;i<=n;i++)
{
if (a[i]!=b[i])
{
flaga[a[i]]--;
}
}
while (1)
{
if (flaga[mi]<=0)
{
cout<<mi<<" ";
break;
}
mi++;
}
}
long long change(int n)
{
int ret=1;
while (n--)
{
ret=ret*2%INF;
}
return ret;
}
int main() {
freopen("Mex.in","r",stdin);
freopen("Mex.out","w",stdout);
cin>>n;
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
flaga[a[i]]++;
}
for (int i=1;i<=n;i++)
{
scanf("%d",&b[i]);
flagb[b[i]]++;
}
find();
if (n<=15)
{
dfs(1);
printf("%d",cnt);
return 0;
}
for (int i=0;;i++)
{
if (!flaga[i])
{
printf("%lld",change(i));
return 0;
}
}
}