题意:

给定 n 名选手的披萨美味值,选手间对决规则为:选两名未淘汰选手比拼,美味值不同则低者淘汰,相同则两人均淘汰,比赛至仅剩 1 名选手(该选手获胜)或无选手剩余时结束。需为每位选手判断是否存在对应的对决安排,使其成为最终唯一的胜者,存在则输出 1,否则输出 0。

核心思路:

第一步:输入处理与最大值查找

先通过 optimizeIO() 优化输入输出速度(适配大数据量场景); 读取每组测试用例的 n 个数字并存储在数组中,同时遍历数组找到其中的最大值 m。

第二步:统计最大值出现次数

再次遍历数组,统计最大值 m 出现的总次数 sum,这是后续输出规则的核心判断依据。

第三步:按规则生成输出

第三次遍历数组,对每个数字判断两个条件:「是否是最大值」「最大值出现次数的奇偶性」,按题意规则逐个输出 0 或 1,最后换行完成该组测试用例的输出。

#include<bits/stdc++.h>
using namespace std;
inline void optimizeIO() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
}
int main() {
	optimizeIO();
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		vector<long long>a(n);
		long long m=0;
		for(int i=0;i<n;i++)
		{
			cin>>a[i];
			m=max(m,a[i]);
		}
		int sum=0;
		for(int i=0;i<n;i++)
			if(m==a[i])
				sum++;
		for(int i=0;i<n;i++)
		{
			if(a[i]==m)
				if(sum%2==0)
					printf("0");
				else 
					printf("1");
			else 
				if(sum%2==0)
					printf("1");
				else 
					printf("0");
		}
		printf("\n");
	}
	return 0;
}