译自 Italian Olympiad in Informatics (OII) 2025 - Piramide bicolore。
建造 OII 纪念金字塔的准备工作一切就绪,现在轮到 Nicoletta 向乌迪内市议会提交项目方案了。
金字塔由黑色和白色的立方体构成。为了加快进度,项目按以下方式执行:
- 首先,Nicoletta 将设计底座(第 层):这一层是一个 的立方体方阵,其颜色可以用矩阵 描述。具体来说,如果 , 上的立方体就是黑色,否则是白色的。
- 然后,她将继续建造第 层到第 层。第 层的每个立方体都恰好位于其下方四个立方体的公共顶点之上。如果在它下方的四个立方体中,相邻的立方体都不同色,这个立方体就是黑色,否则是白色的。
:::align{center}

图 1:Nicoletta 提出的金字塔方案之一。
:::
市议会对该项目仍不完全信服,并希望获得有关金字塔最终外观的更多信息。为了更清楚地了解情况,议会决定向 Nicoletta 提出 个问题:在每个问题中,他们会询问位于第 层、位置 的立方体是什么颜色。
金字塔中的立方体可由一个三元组 表示,其中 是立方体的层数, 是其在层内的坐标。特别地,立方体 恰好位于其下方四个立方体的公共顶点之上:、、 和 。在样例解释中你可以看到一个示例。
实现方式
附件中包含一个实现示例 concessione.cpp。
你需要实现如下函数:
void init(int N, vector<string> M);
- :金字塔的大小。
- :二维数组,每一维下标从 到 ,表示金字塔的第 层(底座)。
- 对于每个测试点,该函数都只会被调用一次。
bool query(int h, int x, int y);
- 整数 表示立方体的位置是 。
- 如果位置 上的立方体是黑色的,则该函数需要返回
true;否则返回 false。
- 对于每个测试点,该函数将被调用 次。