很有意思的题目,感觉看智商。。
/* 结论:显然只要成功操作一次,就可以把整个数组变成k 如何找到这一次操作? 把<k,=k,>k的数变成0 1 2 显然只要存在11,12,101,102,这种类型,就必定可以操作成功一次 结论:只要存在1,且存在|i-j|<=2 && ai>=1 && aj>=1,就可以成功 */ #include<bits/stdc++.h> using namespace std; #define N 100005 int n,k,a[N]; int main(){ int t;cin>>t; while(t--){ cin>>n>>k; for(int i=1;i<=n;i++)cin>>a[i]; int f=0; for(int i=1;i<=n;i++)if(a[i]==k)f=1; if(!f){puts("no");continue;} if(n==1){puts("yes");continue;} for(int i=1;i<=n;i++) if(a[i]<k)a[i]=0; else if(a[i]==k)a[i]=1; else a[i]=2; int last=0; f=0; for(int i=1;i<=n;i++)if(a[i]>=1){ if(!last)last=i; else { if(i-last<=2)f=1; last=i; } } if(f)puts("yes"); else puts("no"); } }