分析:我是通过画数轴来找到思路的,就是用一个c数组来记录所有时间的巡逻人数。
#include<stdio.h>
#include<string.h>
int n,a[10010],b[10010],c[10010];
int main()
{
int i,j,t,m,s,f,max,mmax,min,mmin,flag;
scanf("%d",&t);
while(t --)
{
flag = 0;
memset(c,0,sizeof(c));
max = mmax = 0;
min = mmin =99999999;
scanf("%d%d%d%d",&n,&m,&s,&f);
for(i = 0; i < n; i ++)
{
scanf("%d",&a[i]);
if(a[i] < min)
min = a[i];
}
for(i = 0; i < n; i ++)
{
scanf("%d",&b[i]);
if(b[i] > max)
max = b[i];
}
for(i = 0; i < n; i ++)
{
for(j = a[i]; j < b[i]; j ++)
c[j] ++;
}
for(i = s; i < f; i ++)
{
if(c[i] > mmax)
mmax = c[i];
if(c[i] < mmin)
mmin = c[i];
}
for(i = s; i < f; i ++)
if(c[i] < m)
{
flag = 1;
printf("NO %d\n",mmin);
break;
}
if(flag == 0)
printf("YES %d\n",mmax);
}
return 0;
}