問題への解決策[CF1271C Shawarmaテント]

学校に近い場所からのルートは限り私たちは学校の周りに8点を考慮するようすることができ、より多くなり、試料を分析することにより求めることができます。ポイントのために見つけることができると、このノード点を通過しますルートが決定されます。あなたは周りの8つのノードが渡された学校の数を数えることができる入るときに、あなたは最大のものを見つけることができます。判定境界に注意してください。

書式#include <iostreamの>
書式#include <cstdioを>
名前空間stdを使用。
INT、N、SX、SY、ANS = -1、ansx、ansy。
INTのDX [8] = { -  1,0,1,1,1,0、-1、-1}、すなわち[8] = { -  1、-1、-1,0,1,1,1、 0}。
INT CNT [8]; //左上、上、右上、右下、低下、左下、左 
空のチェック(int型のx、int型のY)
{
    CNT [0] + =(X <= SX-1 && Y <= SY-1)。
    彼らが持っているものとする[1] + =(<= S-1)。
    CNT [2] + =(X> = SX + 1つの&& Y <= SY-1)。
    CNT [3] + =(X> = SX + 1)。
    CNT [4] + =(X> = SX + 1つの&& Y> = SY + 1)。
    CNT [5] + =(Y> = + 1)。
    CNT [6] + =(X <= SX-1 && Y> = SY + 1)。
    CNT [7] + =(X <= SX-1)。
} //統計
メインint型()
{
    scanf関数( "%D%D%D"、&N、&SX、SY&);
    (; I <= N; iは++ I = 1の整数、x、y)のための
    {
        scanf関数( "%D%D"、およびX&Y)。
        (x、y)をチェック。
    }
    (INT I = 0、NX = SX + DX [I] = + DY [i]は、I <8; I ++、NX = SX + DX [I] = + DY [I])のための
        IF(NX> = 0 && NX <= 1E9 && NY> = 0 && NY <= 1E9 && CNT [I]> ANS)
            ANS = CNT [i]は、ansx = NX、ansy =。
    printf( "%D \ n%D%D"、ANS、ansx、ansy)。
    0を返します。
}

おすすめ

転載: www.cnblogs.com/TEoS/p/12048490.html