Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 2 KB
program nyak;
const maxN = 10001;
type TPont = record
x,y:integer;
end;
TPontok = array[1..maxN]of TPont;
var N:integer;
p:TPontok;
function fir(P0,P1,P2:TPont):integer;
var xmul:Longint;
begin
xmul:=(longint(P1.x)-longint(P0.x))*(longint(P2.y)-longint(P0.y))-(longint(P2.x)-longint(P0.x))*(longint(P1.y)-longint(P0.y));
if xmul < 0 then
fir:=-1
else if xmul > 0 then
fir:=1
else
fir:=0;
end;
procedure load;
var be:text;
i:integer;
begin
assign(be,paramstr(1));
reset(be);
readln(be,N);
for i:=1 to N do
begin
readln(be,P[i].x,P[i].y);
end;
P[N+1]:=P[1];
close(be);
end;
function ottvan(q,p:TPont):boolean;
begin
ottvan:=(p.y=q.y)and(p.x>q.x);
end;
function szakaszon(p1,p2,q:TPont):boolean;
begin
Szakaszon:= (fir(p1,p2,q)=0) And
(Abs(P1.x-Q.x)<=Abs(P2.x-P1.x)) And
(Abs(P2.x-Q.x)<=Abs(P2.x-P1.x)) And
(Abs(P1.y-Q.y)<=Abs(P2.y-P1.y)) And
(Abs(P2.y-Q.y)<=Abs(P2.y-P1.y));
end;
function metsz(p1,p2,p3,p4:TPont):boolean;
begin
metsz:=(fir(p1,p2,p3)*fir(p1,p2,p4) = -1)and(fir(p3,p4,p1)*fir(p3,p4,p2)=-1);
end;
function belso(q:TPont):boolean;
var max:integer;
i:integer;
q0:TPont;
ps:boolean;
begin
max:=1;
for i:=2 to N do if p[max].x<p[i].x then max:=i;
q0.x:=p[max].x+1;
q0.y:=q.y;
ps:=true;
for i:=1 to N do
if szakaszon(p[i],p[i+1],q) then ps:=false;
if ps then
begin
for i:=1 to N do
begin
if metsz(q,q0,p[i],p[i+1]) then ps:=not(ps);
if ottvan(q,p[i])and(not(ottvan(q,p[i-1]))) then
begin
if not(ottvan(q,p[i+1])) then
ps:=(((p[i-1].y)-q.y)*(p[i+1].y-q.y)<0)xor ps
else
ps:=(((p[i-1].y)-q.y)*(p[i+2].y-q.y)<0)xor ps;
end;
end;
end;
belso:=not(ps);
end;
var q:TPont;
vege,res:boolean;
begin
load;
repeat
readln(q.x,q.y);
vege:= (ioresult<>0);
if not(vege) then
begin
res:=belso(q);
if res then writeln('IGEN') else writeln('NEM');
end;
until vege;
end.of.program