原题链接:http://118.190.20.162/view.page?gpid=T112
❄️ | 题目描述
给出一个矩形区域
给出 n 个人的行动轨迹,每一组数据包含多个坐标
有坐标处于矩形区域内称为经过;连续有 k 个坐标处于矩形区域内,称为逗留。
统计经过人数和逗留人数
✨ | 实现思路
遍历每一个人的行动路线:
两个标记 flag1、flag2。记录是否经过或逗留
最后输出个数
💓 | 具体代码
```cpp
#include <iostream>
using namespace std;
int n, k, t, xl, yd, xr, yu;
int cnt_p, cnt_w;
bool check(int x, int y)
{
if (x >= xl && x <= xr && y >= yd && y <= yu) return true;
return false;
}
int main()
{
cin >> n >> k >> t >> xl >> yd >> xr >> yu;
for (int i = 1; i <= n; i ++)
{
bool flag_p = false, flag_w = false;
int num = 0; // 连续经过的点数
for (int j = 1; j <= t; j ++)
{
int x, y;
cin >> x >> y;
if (check(x, y))
{
flag_p = true;
num ++;
}
else
{
if (num >= k) flag_w = true;
num = 0;
}
}
if (num >= k) flag_w = true;
if (flag_p) cnt_p ++;
if (flag_w) cnt_w ++;
}
cout << cnt_p << endl;
cout << cnt_w << endl;
}
```