C++14,本来开了O2,结果全WA,检查了半天没有问题,然后把O2关掉就可以了。请问这题为什么开O2过不了?
代码:
#include <iostream>
// #include <cstdio>
using namespace std;
int main()
{
int v[22][22][22], w, x, h, q, x1, x2, y1, y2, z1, z2, ans;
cin >> w >> x >> h >> q;
for (int i = 1; i <= w; i++) // 如果for循环里面是 for、if这些语句但占用了不止一行也可以不加大括号
for (int j = 1; j <= x; j++)
for (int k = 1; k <= h; k++)
v[i][j][k] = 1; // 先把三维数组的每个位置赋值为 1
while (q--)
{
cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2;
for (int i = x1; i <= x2; i++)
for (int j = y1; j <= y2; j++)
for (int k = z1; k <= z2; k++)
v[i][j][k] = 0; // 对每个操作,把删除的小方块所对应的数组位置赋值为 0
}
for (int i = 1; i <= w; i++)
for (int j = 1; j <= x; j++)
for (int k = 1; k <= h; k++)
ans += v[i][j][k]; // 所有操作之后,对每个小方块看一下是 1 还是 0,计算答案
cout << ans << endl;
return 0;
}