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;}