LKNIGHT - Mã đi tuần

Tác giả: ladpro98

Ngôn ngữ: Pascal

program lknight;
uses    math;
const   fi='';
        dx:array[1..8] of longint = (-2,-1,1,2,2,1,-1,-2);
        dy:array[1..8] of longint = (1,2,2,1,-1,-2,-2,-1);
var     n,k,c,x,y,maxx,maxy,minx,miny,res,i,j:longint;
        cc:char;
        inp:text;
function inBound(i,j:longint):boolean;
begin
        exit((1<=i) and (i<=n) and (1<=j) and (j<=n));
end;

begin
        assign(inp,fi);reset(inp);
        readln(inp,n,k);
        for i:=1 to k do
        begin
                read(inp,cc);
                c:=ord(cc)-48;
                inc(x,dx[c]);
                inc(y,dy[c]);
                maxX:=max(maxX,x);
                minX:=min(minX,x);
                maxY:=max(maxY,y);
                minY:=min(minY,y);
        end;
        for i:=1 to n do
        for j:=1 to n do
        if inBound(i+maxX,j+maxY) and inBound(i+minX,j+minY) then
        inc(res);
        write(res);
end.

Download