题解 | #NCPC#
比赛安排(PDF题面存放于本题)
https://ac.nowcoder.com/acm/contest/120562/A
1.题目分析
如果最大值的个数为奇数时任意一个最大值都有可能获得胜利,那么除了最大值位置以外都是输出0,最大值位置为输出1;如果 最大值的个数为偶数个两两抵消那么最大值以外的所有数都有可能获得胜利,那么最大值位置为输出0,其他位置输出1。
2.代码
#include<stdio.h>
int main()
{ long long max,m,n;
int t;
scanf("%d",&t);
int i,j;
for(i=0;i<t;i++)
{
max=0;m=0;
scanf("%lld",&n);
long long int a[n];
char s[n+1];
for(j=0;j<n;j++)
{
scanf("%lld",&a[j]);
if(max<a[j]) max=a[j];
}
for(j=0;j<n;j++)
if(a[j]==max)
m++;
for(j = 0; j < n; j++)
{
if(a[j] == max)
{
if(m % 2 == 0)
{
s[j] = '0';
}
else
{
s[j] = '1';
}
}
else
{
if(m % 2 == 0)
{
s[j] = '1';
}
else
{
s[j] = '0';
}
}
}
s[n]=0;
printf("%s\n",s);
}
return 0;
}
