解题思路:
1.首先记录经过高危区域的次数
2.只有次数大于等于k,才要继续判断是否有连续k或更多点在高危区域内
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,t,xl,yd,xr,yu;
cin>>n>>k>>t>>xl>>yd>>xr>>yu;
int sum1=0; //表示经过高危区域的人数
int sum2=0; //曾在高危区域逗留的人数
for(int i=0;i<n;i++)
{
int arr[1005][2]; //坐标
int sumt=0; //经过高危区域的时刻数
for(int j=0;j<t;j++)
{
cin>>arr[j][0]>>arr[j][1];
int x=arr[j][0];
int y=arr[j][1];
if(x>=xl&&x<=xr&&y>=yd&&y<=yu) //在区域内
{
sumt++;
}
}
if(sumt>0) sum1++;
if(sumt>=k) //只有大于k,才需要继续接下来的判断,否则sum2直接为0
{
int numt=0; //连续经过高危区域的时刻数
for(int j=0;j<t;j++)
{
int x=arr[j][0];
int y=arr[j][1];
if(x>=xl&&x<=xr&&y>=yd&&y<=yu)
{
numt++;
}
else //有一个坐标不符合,则重新寻找连续的k个坐标
{
numt=0;
}
if(numt>=k) //找到,直接退出
{
sum2++;
break;
}
}
}
}
cout<<sum1<<endl;
cout<<sum2;
return 0;
}