-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKANAP313.PAS
80 lines (72 loc) · 1.59 KB
/
KANAP313.PAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{ MK 2002 }
{ Mantas Kanaporis }
{ Vilniaus Ïemynos gimnazija }
{ -------------------------- }
{ III metÖ I skyrius }
{ 3 uØdavinys }
{
PradØioje suformuosime hierarchinÔ medÔ, t. y., nustatysime, kam
pavaldus pirmasis narys, kam pavaldus pirmojo nario valdininkas ir t. t.
AnalogiÕkai ir su antruoju nariu. Tada rasime pirmÐjÔ nuo hierarchinio
medØio apaÑios bendrÐ narÔ, kuris ir bus bendras jÖ valdininkas.
}
Program KANAP03;
type
Tmas = array [1 .. 20] of integer;
var
mas : TMas;
v1, v2, viso, ats : integer;
procedure nuskaitymas (var v1, v2, viso : Integer; var mas : TMas);
var
f : Text;
ck : Integer;
begin
assign (f, 'duom.txt');
reset (f);
readln (f, viso, v1, v2);
mas [1] := 0;
for ck := 2 to viso do
readln (f, mas [ck]);
close (f)
end;
function rask (v1, v2 : Integer; var mas : Tmas) : Integer;
var
mas1, mas2 : Tmas;
ck1, ck2, viso1, viso2 : Integer;
begin
viso1 := 0;
while v1 <> 0 do
begin
inc (viso1);
mas1 [viso1] := v1;
v1 := mas [v1];
end;
viso2 := 0;
while v2 <> 0 do
begin
inc (viso2);
mas2 [viso2] := v2;
v2 := mas [v2]
end;
for ck1 := 1 to viso1 do
for ck2 := 1 to viso2 do
if mas1 [ck1] = mas2 [ck2] then
begin
rask := mas1 [ck1];
exit
end
end;
procedure rasymas (ats : integer);
var
f : TExt;
begin
assign (f, 'rez.txt');
rewrite (f);
writeln (f, ats);
close (f)
end;
begin
nuskaitymas (v1, v2, viso, mas);
ats := rask (v1, v2, mas);
rasymas (ats)
end.