学校に近い場所からのルートは限り私たちは学校の周りに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を返します。
}