#P1505. 【华为】2024-9-19-第一题-网络检查

【华为】2024-9-19-第一题-网络检查

题目描述

一线工程师每到重要节日需要对网络进行健康检查,在网络中对各个网元采集数据,判断当前网络是否健康。

因每个网元的判断条件以及采集的数据不同,现在需要你对网络采集到的数据,以及工程师提供的判断条件进行解析。判断条件为布尔表达式,保证合法,字段名不会与关键字冲突。

若采集数据符合条件,则认为网络健康,否则网络处于不健康状态。

输入描述

第一行输入两个整数n,m(0n5,0m10)n,m(0\le n\le 5,0\le m\le 10)

接下来有nn行字符串expressexpress

接下来mm行,每行均有两个字符串,keykeyvaluevalue

备注:表达式中仅会出现 AND,OR,(),',=,空格,字段名、数据(单引号内),给出的表达式一定是有效的,andand优先级高于oror,“=="左侧为字段名,“=="右侧为数据,类型为字符串

输出描述

共有mm行,每行一个整数,表示对应mm个判断条件的结果。其中00表示健康,11表示不健康。`

样例 1

输入

2 2
error = '0' AND (name = 'NE40' OR name = 'NE20')
error = '1' AND (name = 'NE40' OR name = 'NE20')
name NE40
error 0

输出

0
1

样例解释

对于条件:error='0'and (name='NE40'or name='NE20'),当namename取值为NE40NE40errorerror取值为00时,表达式计算结果为truetrue,所以输出00,表示健康;

对于条件:error ='1' and (name = 'NE40' or name ='NE20'),当namename取值为NE40NE40errorerror取值为00时,表达式计算结果为falsefalse,所以输出11,表示不健康.

样例 2

输入

3 2
error = '1' AND (name = 'NE40' OR name ='NE20')
error = '2' AND (name = 'NE40' OR name ='NE20')
error = '3' AND (name = 'NE40' OR name ='NE20')
name NE40
error 3

输出

1
1
0

样例解释

对于条件:error ='1' and (name ='NE40' or name ='NE20'),当namename取值为NE40NE40errorerror取值为33时,表达式计算结果为falsefalse,所以输出11,表示不健康;

对于条件:error ='2' and (name = 'NE40' or name = 'NE20'),当namename取值为NE40NE40errorerror取值为33时,表达式计算结果为falsefalse,所以输出11,表示不健康;

对于条件:error ='3' and (name= 'NE40' or name ='NE20'),当namename取值为NE40NE40errorerror取值为33时,表达式计算结果为truetrue,所以输出00,表示健康.