Listing RADAR.PAS 
Program Radar; 
const maxn=1000; 
type date=array[1..maxn] of 
record 
timp,li,co:Integer 
end; 
var i,n:Integer; 
ses:date; {sesizeaza } 
c:Char; 
f,g:Text; 
Function atinge_sol(i,j,k,tli,tco:Integer; 
var btimp,bli,bco:Integer):Boolean; 
Function se_apropie(li,co:Integer):Boolean; 
begin 
se_apropie:=(li>=496) and (li<=505) 
and (co>=496) and (co<=505) 
end; 
Function afara(li,co:Integer):Boolean; 
begin 
afara:=(li<1) or (li>1000) 
or (co<1) or (co>1000) 
end; 
begin 
bli:=ses[i].li; 
bco:=ses[i].co; 
btimp:=ses[i].timp; 
while not se_apropie(bli,bco) 
and not afara(bli,bco) do 
begin 
btimp:=btimp+1; 
bli:=bli+tli; 
bco:=bco+tco 
end; 
atinge_sol:=se_apropie(bli,bco) 
end; 
Procedure alerteaza(i,j,k,tli,tco:Integer); 
var ii,t,btimp,bli,bco:Integer; 
begin 
if atinge_sol(i,j,k,tli,tco,btimp,bli,bco) 
then 
begin 
Write(g,ses[k].timp,' ',btimp); 
Writeln(g,' ',bli,' ',bco) 
end; 
for ii:=i+1 to n do 
begin 
t:=ses[ii].timp-ses[i].timp; 
if (t>=9) and 
((ses[ii].li-ses[i].li) div t=tli) and 
((ses[ii].co-ses[i].co) div t=tco) 
then ses[ii].timp:=0 
end 
end; 
Procedure prelucrare(i:Integer); 
var j,k,tj,tk,tli,tco:Integer; 
gata:Boolean; 
begin 
j:=i+1; 
gata:=false; 
while not gata and (j<=n) do 
begin 
tj:=ses[j].timp-ses[i].timp; 
if tj>=9 
then 
begin 
if (Abs(ses[j].li-ses[i].li) mod tj=0) 
and 
(Abs(ses[j].co-ses[i].co) mod tj=0) 
then 
begin 
k:=j+1; 
tli:=(ses[j].li-ses[i].li)div tj; 
tco:=(ses[j].co-ses[i].co)div tj; 
while not gata and (k<=n) do 
begin 
tk:=ses[k].timp-ses[j].timp; 
if tk>=9 
then 
begin 
if (Abs(ses[k].li-ses[j].li) 
mod tk=0) and 
(Abs(ses[k].co-ses[j].co) 
mod tk=0) and 
((ses[k].li-ses[j].li) 
div tk=tli) and 
((ses[k].co-ses[j].co) 
div tk=tco) 
then 
begin 
gata:=true; 
alerteaza(i,j,k,tli,tco) 
end 
end; 
k:=k+1; 
end 
end 
end; 
Inc(j) 
end 
end; 
Begin 
Assign(f,'RACHETA.IN'); 
Reset(f); 
Assign(g,'RACHETA.OUT'); 
Rewrite(g); 
i:=0; 
while not Eof(f) do 
begin 
i:=i+1; 
with ses[i] do Readln(f,timp,li,co) 
end; 
n:=i; 
for i:=1 to n do 
if ses[i].timp>0 then prelucrare(i); 
Close(f); Close(g) 
End.