https://codeforces.com/problemset/problem/1349/B
把黑红oi大爷都给难住了
加了一堆判断,wa了一年。。。先写c就win了。。。
1
9 3
5 5 1 1 1 1 3 1 1
从这组样例可以看出,可以先把5扩展到3左边,然后3再拓展回去。。。
于是我们只要在有k的前提下,找到有没有>=k的可以连在一起,就行了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxl=3e5+10;
int n,m,ans,cas,k;
int a[maxl];
char s[maxl];
bool in[maxl];
inline void prework()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
}
inline void mainwork()
{
ans=0;
if(n==1)
{
if(a[1]==k) ans=1;
return;
}
int l=0,r=0,sum1,sum2,mid;
for(int i=1;i<=n;i++)
if(a[i]==k)
{
l=i;break;
}
if(l==0) return;
for(int i=2;i<=n;i++)
if(a[i-1]>=k && a[i]>=k)
ans=1;
for(int i=1;i<=n-2;i++)
if(a[i]>=k && a[i+2]>=k)
ans=1;
}
inline void print()
{
if(ans)
puts("yes");
else
puts("no");
}
int main()
{
int t=1;
scanf("%d",&t);
for(cas=1;cas<=t;cas++)
{
prework();
mainwork();
print();
}
return 0;
}