题目分析:序列处理
代码分析: 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; }