给定一组 子集mex值(冬季每日一题 29)_测试用例 个整数的集合 子集mex值(冬季每日一题 29)_贪心_02(可能存在相同元素)。

请你将该集合分为两个子集 子集mex值(冬季每日一题 29)_测试用例_03子集mex值(冬季每日一题 29)_贪心_04(子集可以为空,也可以包含相同元素)。

要求 子集mex值(冬季每日一题 29)_数据_05

一个集合的 子集mex值(冬季每日一题 29)_贪心_06

  • 子集mex值(冬季每日一题 29)_ci_07
  • 子集mex值(冬季每日一题 29)_ci_08
  • 子集mex值(冬季每日一题 29)_数据_09

如果集合中的任意整数 子集mex值(冬季每日一题 29)_ci_10 均满足 子集mex值(冬季每日一题 29)_ci_10 在该集合中的出现次数等于 子集mex值(冬季每日一题 29)_ci_10子集mex值(冬季每日一题 29)_测试用例_03 中出现的次数与 子集mex值(冬季每日一题 29)_ci_10子集mex值(冬季每日一题 29)_贪心_04 中出现的次数之和,则我们认为该集合被分成了 子集mex值(冬季每日一题 29)_测试用例_03子集mex值(冬季每日一题 29)_贪心_04

输入格式
第一行包含整数 子集mex值(冬季每日一题 29)_测试用例_18,表示共有 子集mex值(冬季每日一题 29)_测试用例_18

每组数据第一行包含整数 子集mex值(冬季每日一题 29)_测试用例

第二行包含 子集mex值(冬季每日一题 29)_测试用例 个整数 子集mex值(冬季每日一题 29)_贪心_02

输出格式
每组数据输出一行一个结果,表示 mex(A)+mex(B) 的最大值。

数据范围
子集mex值(冬季每日一题 29)_贪心_23
子集mex值(冬季每日一题 29)_数据_24
子集mex值(冬季每日一题 29)_测试用例_25
输入样例:

4
6
0 2 1 5 0 1
3
0 1 2
4
0 2 0 1
6
1 2 3 4 5 6

输出样例:

5
3
4
0

样例解释
在第一个测试用例中,子集mex值(冬季每日一题 29)_测试用例_26

在第二个测试用例中,子集mex值(冬季每日一题 29)_数据_27

在第三个测试用例中,子集mex值(冬季每日一题 29)_数据_28

在第四个测试用例中,子集mex值(冬季每日一题 29)_测试用例_29


#include<iostream>
#include<cstring>

using namespace std;

const int N = 110;

int n;
bool a[N], b[N];

int main(){


int t;
cin >> t;
int x;
while(t--){

memset(a, 0, sizeof a);
memset(b, 0, sizeof b);
cin >> n;
for(int i = 0; i < n; i++){
cin >> x;
if(a[x]) b[x] = true;
else a[x] = true;
}

int sa = 0, sb = 0;
while(a[sa]) sa++;
while(b[sb]) sb++;
cout << sa + sb << endl;
}


return 0;
}