C++80分求助,样例2为啥WA
查看原帖
C++80分求助,样例2为啥WA
921531
HuajiHuajiHuaji楼主2023/5/25 13:21
#include <iostream>
using namespace std;
bool area[150][150];
inline void heat(int mx,int my){ //防止越界
    if(mx >= 0&&my >= 0) area[mx][my] = true;
}
void firedown(int cx,int cy){ //火把放置
    heat(cx,cy);heat(cx-1,cy);heat(cx-2,cy);
    heat(cx+1,cy);heat(cx+2,cy);heat(cx,cy-1);
    heat(cx,cy+1);heat(cx,cy+2);heat(cx,cy-2);
    heat(cx+1,cy+1);heat(cx-1,cy-1);heat(cx-1,cy+1);
    heat(cx+1,cy-1);
}
void lightdown(int dx,int dy){ //萤石
    for(int ii = dx-2;ii <= dx+2;ii++)
        for(int jj = dy-2;jj <= dy+2;jj++)
            heat(ii,jj);
}
struct{int x,y;}fire[100],light[100];
int main(){
    int n,firenum,lightnum;int lasting = 0;
    cin >> n >> firenum >> lightnum;
    for(int i = 0;i < firenum;i++) cin >> fire[i].x >> fire[i].y;
    for(int i = 0;i < lightnum;i++) cin >> light[i].x >> light[i].y;
    for(int i = 0;i < n;i++)
        for(int j = 0;j < n;j++)
            area[i][j] = false;
    for(int i = 0;i < firenum;i++) firedown(fire[i].x,fire[i].y);
    for(int i = 0;i < lightnum;i++) lightdown(light[i].x,light[i].y);
    for(int i = 0;i < n;i++)
        for(int j = 0;j < n;j++)
            if(!area[i][j])lasting++;
    cout << lasting;
    return 0;
}
2023/5/25 13:21
加载中...