![](https://i-blog.csdnimg.cn/blog_migrate/fe5b1a2382f68588ed7802b7fa6c6dcd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d14062b025bcb95a3c47883be1bcf8e9.png)
#include<bits/stdc++.h>
using namespace std;
int n, k, t, xl, yd, xr, yu;
pair<int, int>p1[1003];
int main() {
cin >> n >> k >> t >> xl >> yd >> xr >> yu;
int i;
int num1 = 0, num2 = 0;
for (int j = 0; j < n; j++) {
int m = 0;
int stay = 0;
int flag = 0;
for (i = 0; i < t; i++) {
cin >> p1[i].first >> p1[i].second;
if (p1[i].first >= xl && p1[i].first <= xr && p1[i].second >= yd && p1[i].second <= yu) {
m++;
flag ++;
}
else {
flag = 0;
}
if (flag >=k) {
stay=1;
}
}
if (m >= 1) {
num1++;
}
if (stay == 1)num2++;
}
cout << num1 <<endl<< num2 ;
}
二刷
#include<bits/stdc++.h>
using namespace std;
int n, k, t, xl, yl, xr, yr;
//map<int, map<int, int>>mp;
int main() {
cin >> n >> k >> t >> xl >> yl >> xr >> yr;
int i,j;
int cnt1=0;//经过
int cnt2=0;//逗留
for (i = 0; i < n; i++) {
int cnt[1010] = {0};//连续个数
for (j = 0; j < t; j++) {
int x, y;
cin >> x >> y;
//mp[x][y] = 1;
if (x >= xl && x <= xr && y >= yl && y <= yr) {
cnt[j] = 1;
}
}
int flag1 = 0;
int flag2 = 0;
int z = 0;
for (j = 0; j < 2 * t; j++) {
if (cnt[j] == 1&&flag1==0) {
flag1 = 1;
cnt1++;
}
if (cnt[j] == 1 && cnt[j + 1] == 1) {
z++;
}
else {
z = 0;
}
if (z == k - 1) {
cnt2++;
break;
}
}
}
cout << cnt1 << endl << cnt2;
}