标签:targe return 一个 ons ace lan pre bool can
原题链接
考察:思维
思路:
??从小区间开始看:
??总结即判定长度为2的区间,和判定长度为3的区间即可.
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int n,k,a[N];
bool check()
{
bool ok = 0;
for(int i=1;i<=n;i++)
if(a[i]==k) ok = 1;
if(!ok||n==1) return ok;
for(int i=2;i<=n;i++)// ==k >k
if(a[i-1]>k&&a[i]==k) return 1;
else if(a[i-1]==k&&a[i]>k) return 1;
int cnt[2];
memset(cnt,0,sizeof cnt);
for(int i=1,j=1;i<=n;i++)//<k >k >k
{
while(j<=n&&j-i<=2)
{
if(a[j]<k) cnt[0]++;
else cnt[1]++;
j++;
}
if(cnt[1]>cnt[0]) return 1;
if(j>n) break;
if(a[i]<k) cnt[0]--;
else cnt[1]--;
}
return 0;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
if(check()) puts("yes");
else puts("no");
}
return 0;
}
Orac and Medians CodeForces - 1349B
标签:targe return 一个 ons ace lan pre bool can
原文地址:https://www.cnblogs.com/newblg/p/14902582.html