HM059 野指针巡检

HM059 野指针巡检

HM059 野指针巡检

来源: 第 59 集 指针-野指针

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

野指针指的是:指针变量指向了一块**非法**内存,也就是我们没有申请、因而没有权利操纵的空间。它和空指针不同——空指针明确指向编号 \(0\);野指针则是随便指向某个十六进制地址,例如把字面量 0x1100 强转成 int *。这样写语法往往能通过编译,编译器检测不出问题,但运行时一旦解引用,就会因为没有访问权限而出错。

空指针和野指针有一个共同点:指向的都不是自己申请的空间,因此都不要随意访问。程序中应尽量避免出现野指针。

现在已经申请到一段连续合法地址 \([L,R]\)(闭区间),其中地址 \(L+i\) 存放第 \(i\) 个整数(\(i\) 从 \(0\) 开始)。读入这段区间上的全部取值,再处理若干次地址查询:

  • 地址为 \(0\):这是空指针,不是自己申请的空间,输出 NULL,不解引用;
  • 地址落在 \([L,R]\):这是已申请空间,输出该地址上的整数;
  • 其余地址:这是野指针(包括把 0x1100 这类编号强转成指针的情况),输出 WILD,不解引用。

输入格式

第一行两个整数 \(L\)、\(R\)(\(1 \le L \le R \le 10^9\),且 \(R-L+1 \le 100\)),表示已申请的合法地址闭区间。

第二行 \(R-L+1\) 个整数,依次为地址 \(L,L+1,\ldots,R\) 上存放的值,每个整数的绝对值不超过 \(10^9\)。

第三行一个整数 \(q\)(\(1 \le q \le 100\))。

接下来 \(q\) 行,每行一个整数 \(addr\)(\(0 \le addr \le 10^9\)),表示一次查询的地址编号。

输出格式

共 \(q\) 行,每行一个结果:

  • 若 \(addr=0\),输出 NULL
  • 若 \(L \le addr \le R\),输出该地址上的整数;
  • 否则输出 WILD

每行末尾换行。

样例

输入 #1

1000 1002
7 8 9
3
0
1001
4352

输出 #1

NULL
8
WILD

输入 #2

10 10
42
2
10
11

输出 #2

42
WILD

说明

样例 1 已申请 \([1000,1002]\)。地址 \(0\) 是空指针。地址 \(1001\) 合法,值为 \(8\)。\(4352\) 即十六进制 0x1100,并未申请,属于野指针。样例 2 只申请了地址 \(10\),地址 \(11\) 越界,同样是野指针。

信息

ID
1058
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者