前言
你好啊,我是努力奔跑的追梦人~我始终相信着未来,一分耕耘一分收获。
提示:以下是本篇文章正文内容,所有题解均使用 C/C++ 编程语言。
#include <iostream>
using namespace std;
bool InArea(int xl, int yd, int xr, int yu, int dstX, int dstY) // 判断(dstX, dstY)是否在区域内
{
return xl <= dstX && dstX <= xr && yd <= dstY && dstY <= yu;
}
int main()
{
int n, k, t;
int xl, yd, xr, yu;
cin >> n >> k >> t;
cin >> xl >> yd >> xr >> yu;
int passNum = 0;
int stayNum = 0;
int px, py;
for (int i = 0; i < n; i++) {
bool isPass = false; // 是否经过区域
bool isStay = false; // 是否逗留区域
int maxKNum = 0; // 最大连续位于区域内
for (int j = 0; j < t; j++) {
cin >> px >> py;
if (InArea(xl, yd, xr, yu, px, py)) { // 在区域内
isPass = true;
maxKNum++;
} else {
if (maxKNum >= k) {
isStay = true;
}
maxKNum = 0;//只要有点不满足在区域内,就把maxKnum计0。这样如果maxKnum ≥k就说明连续超过k个点
}
}
if (isPass) {
passNum++;
}
if (isStay || maxKNum >= k) {
stayNum++;
}
}
cout << passNum << endl;
cout << stayNum << endl;
return 0;
}