治安管理

治安管理

分析:没有oj提交,不知道会不会AC,我是通过画数轴来找到思路的,就是用一个c数组来记录所有时间的巡逻人数。

#include<stdio.h>
#include<string.h>
int inf = 99999999;
int a[10010],b[10010],c[10010];
int main()
{
	int i,j,t,n,m,s,f;
	int max,min,mmax,mmin,flag;
	scanf("%d",&t);
	while(t --)
	{
		memset(c,0,sizeof(c));
		flag = 0;mmin = inf;mmax=0;
		scanf("%d%d%d%d",&n,&m,&s,&f);
		min = s;max = f;
		for(i = 0; i < n; i ++)
		{
			scanf("%d",&a[i]);
			if(min > a[i])
				min = a[i];
		}
		for(j = 0; j < n; j ++)
		{
			scanf("%d",&b[j]);
			if(max < b[j])
				max = b[j];
		}
		for(i = 0; i < n; i ++)
			for(j = a[i]; j <= b[i]; j ++)
				c[j] ++;
		
		for(i = 0; i < n; i ++)
			for(j = 0; j < n; j ++)
				if(a[i] == b[j])
					c[a[i]] --;
					
		for(i = min; i <= max; i ++)
		{
			if(mmin > c[i])
				mmin = c[i];
			if(mmax < c[i])
				mmax = 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;
}