#include<bits/stdc++.h>
using namespace std;
int T,n;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> T;
    while(T--){
        map<int,vector<int>>mp;//注意到n的个数很大,不易开数组,有map的同时能快速确定最大值还能记住最大值的位置与数量
        cin >> n;
        string s(n,'0');//初始化长度为n的全0字符串
        for(int i=0;i<n;i++){
            int x;
            cin >> x;
            mp[x].push_back(i);
        }
        auto &[x,y]=*prev(mp.end());//prev取对象的前一个,需要取地址.&能避免拷贝,提升速度
        int t=1;
                //如果最大值全为偶数,每个人都有赢的机会,那么先前初始化方式就不适用了
        if(y.size()%2==0){
            t=-1;
            s = string(n,'1');
        }
        for(auto &i:y){
            s[i]+=t;
        }
        cout << s << endl;
    }
}
错因:此题在思考的时候没有看懂题意,以为是一个人赢就可以,在赛后复盘的时候才发现是每一个人获胜的概率,解决问题的方向错了,最后只能走递归了
思路:既然是每一个人,那么就考虑每一个人赢的概率,一个人可能是最大的,也可能不是,所以赢的情况分两种进行讨论,当最大时,最大的人有奇数个就能赢,当一个人不是最大时,最大的先把其他人干完了,然后最大的人数有偶数个,那么就能赢