csu1323

来源:互联网 发布:软件生命周期是指 编辑:程序博客网 时间:2024/06/04 18:37
n为M二进制保留最高位,分开2部分来异或,大于等于n的 和 小于n的。
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<vector>#include<algorithm>#include<time.h>#include<stdlib.h>#include<cmath>using namespace std;int batt[100005];int main(){    int N,M;    while(scanf("%d%d",&N,&M)!=EOF)    {        int a[2];        a[0]=a[1]=0;        int ans=0;        for(int i=0;i<N;i++)        {            scanf("%d",&batt[i]);            if(i<2)            {                ans^=batt[i];                a[i]=batt[i];            }        }        sort(batt,batt+N);        int flag=0;int k=0,b=1;        int m=ceil(log((double)M));        m=1<<m;        for(int i=0;i<N;i++)        {            if(batt[i]>=m)            {k=i;break;}        }        for(int i=0;i<k&&b;i++)        {            for(int j=k;j<N;j++)            {                if((batt[i]^batt[j])>M)                {flag=1;b=0;break;}            }        }        if(flag)            puts("YES");        else            puts("NO");    }    return 0;}


原创粉丝点击