Program Byrokrati; const MaxN = 20; type Lejstro = ( nemamLejstro, mamLejstro, shanimLejstro); { tajne znacky na potirani byrokracie } var O : array [1..MaxN,1..MaxN] of byte; { vztahy mezi ouradniky } Papalasi : array [1..MaxN] of Lejstro; { struktura na potirani byrokracie } Papirek : string; { sem se zapisuje poradi navstev } L : integer; { lord - tiskovy mluvci } N : integer; { pocet ouradniku } Ch : string; { pomocny retezec } I : integer; { pomocna promenna } procedure Byrokat(Byrokrat:integer); { sezen lejstra pro byrokrata Byrokrat } var i:integer; begin for i:=1 to N do if O[Byrokrat,i]<>0 then { chce po mne lejstro od byrokrata i ? } if Papalasi[i]=nemamLejstro then { pokud jeho lejstro nemam, } begin papalasi[i]:=shanimLejstro; { tak ho jdu sehnat } Byrokat(i); end else if papalasi[i]=shanimLejstro then { pokud uz jeho lejstro shanim } begin writeln('Ukol neni splnitelny - papalas ',i,' me posila zpatky'); halt(0); end; { Pokud jeho lejstro mam, tak ho ukazu } str(Byrokrat,ch); Papirek := Papirek + ch +','; { je nucen mi sve lejstro vydat } Papalasi[Byrokrat]:=mamLejstro; { zapisu si to } end; procedure NactiVstup; begin { Cosi nacita } end; begin NactiVstup; for i:=1 to N do Papalasi[i]:=nemamLejstro; papirek:=''; papalasi[L]:=shanimLejstro; Byrokat(L); writeln(papirek); end.