B

NCPC

https://ac.nowcoder.com/acm/contest/120562/B

统计出最大数的次数,若为奇数,不管怎么比最后剩下的只可能是最大数,所以奇数次时最大数胜出;而若为偶数的时候,最大数之间可相互抵消,所以无论如何最大数是无法胜出的,但在抵消之前,最大数可以把想胜出数以外的其他数都给干掉,最后最大数再两两抵消,因此若为偶数次的时候,除了最大数本身,其他数都有可能获胜。

``

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        vector<long long> a(n);
        for(int i=0;i<n;i++){
            cin>>a[i];
        }
        long long maxa=a[0];
        for(int i=1;i<n;i++){
            if(a[i]>maxa){
                maxa=a[i];
            }
        }
        int count=0;
        for(int i=0;i<n;i++){
            if(a[i]==maxa){
                count++;
            }
        }
        if(count%2==0){
            for(int i=0;i<n;i++){
                if(a[i]!=maxa){
                    cout<<1;
                }
                else{
                    cout<<0;
                }
            }
        }
        else{
            for(int i=0;i<n;i++){
                if(a[i]==maxa){
                   cout<<1; 
                }
                else{
                    cout<<0;
                }
            }
        }
        cout<<endl;
    }
    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务