标解洛谷P 1789(c++解法)【Mc生存】插火把

7908 ワード

テーマゲート
構想
それぞれのたいまつや蛍石を中心に明かりのある場所を列挙し、マークした後にマークされていない場所の個数を統計すればよい.
コードは次のとおりです.
#include  
using namespace std;
int n, m, k, a, b, ans;
int s[5005][5005];
//  :       
bool pd(int x, int y) 
{ 
    if(x < 1 || y < 1 || x > n || y > n) return 0;
    return 1;
}
//     
int main()
{
    cin>>n>>m>>k; //   
     //  :              ,      
    for(int i = 1; i <= m + k; i++) 
    {
       	cin>>a>>b; //     
        for(int x = -2; x <= 2; x++)
        {
            for(int y = -2; y <= 2; y++)
            { //  5*5   (      ) 
                if((i > m || abs(x) + abs(y) <= 2) && pd(x + a, b + y))
                {
                //     (i > m)  x y         2(      )  
                //        
                    s[x + a][b + y]++;
                }
            }
         }      
    }
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
            ans += s[i][j] == 0; 
            /*
                   ,     ==0(     )
            */ 
    }
    cout<<ans<<endl; //     
    return 0;
}

·