题目分析:序列处理
代码分析:
flag统计连续时间点t的个数;flag1标记是否经过危险区;flag2标记是否在危险区逗留。利用C语言 && 运算符的短路性,减少点运算
满分C++代码:
#include <iostream>
using namespace std;
int main()
{
int n, k, t, l_x, l_y, r_x, r_y;
scanf("%d%d%d%d%d%d%d", &n, &k, &t, &l_x, &l_y, &r_x, &r_y);
int pass_by = 0, stay = 0;
for(int i=0; i<n; i++)
{
int x, y;
int flag = 0;
bool flag1 = false;
bool flag2 = false;
for(int j=0; j<t; j++)
{
scanf("%d %d", &x, &y);
if(x < l_x || x > r_x || y < l_y || y > r_y ) flag = 0;
else
{
if(!flag1) flag1 = true;
if(!flag2 && ++flag == k ) flag2 = true;
}
}
if(flag1) pass_by++;
if(flag2) stay++;
}
printf("%d\n%d", pass_by, stay);
return 0;
}