2659:Bomb Game

keyword

シミュレーション C++

概要

100*100以下のボードがあり、どれかのセルが当たりである。正方形の辺の長さと位置と、その正方形に当たりが入っているかどうかという情報がK(<100)個与えられる。当たりの存在しうるセルの総数を求める問題。
各情報に対してシミュレーションを100*100の計算量で行えるので、愚直にシミュレートしても全体の計算量はO(10^6)。素直に実装する。

bool board[110][110];

int main(){
    int A, B, K, R, S, P, T, i, j;
    scanf("%d%d%d",&A,&B,&K);
    REP(i,A)REP(j,B)  board[i][j] = true;

    while(K--){
        scanf("%d%d%d%d",&R,&S,&P,&T);
        R--;S--;
        REP(i,A)REP(j,B)if(board[i][j]){
            if(((abs(i-R) <= (P>>1)) && (abs(j-S) <= (P>>1))) ^ T) board[i][j] = false;
        }
    }

    int ans = 0;
    REP(i,A)REP(j,B)if(board[i][j]) ans++;

    printf("%d\n",ans);

    return 0;
}