S.44.
Englert Pter, 12.N
Zrnyi Mikls Gimnzium, Zalaegerszeg
Free Pascal (IDE v1.0.10; compiler v2.2.2)


A vltozk:

f: szvegvltoz fjlkezelshez;
m: a villamos maximlis sebessge;
n: a lmpk szma;
l: a plya hossza;
p: a piros idintervallumok szma (az lmpk llapotvltozsai szmnak fele);
k,c,i,j,a,b: segd- s ciklusvltozk;
palya: adott idpillanatban a villamos lehetsges helyzet-sebessg kombincii (palya[j,k] igaz, ha az adott idpillanatban a villamos rkezhet meg az j koordintj pontba k sebessggel);
piros[j,t1,t2]: a piros jelzs idintervallumok. Az j koordintj pontban a lmpa t1 idpillanatban vlt pirosra, s t2-ben zldre.


A program:

Beolvassa az adatokat, a lmpk llapotvltozsait prosval trolja a 'piros' tmbben.

A kezdrtkek megadsa utn idegysgenknt haladva kiszmtja az adott idegysgben a villamos lehetsges helyzet-sebessg kombinciit.A villamos akkor rkezhet meg az adott idegysgben (i) az j koordintj pontba k sebessggel, ha az elz idpontban az j-k koordintj pontba rkezhetett k-1 (ha k>0), k vagy k+1 sebessggel (ekkor ugyanis k-ra vltoztatva a sebessgt egysgnyi id alatt pont az j pontba rhet). Mivel minden idpillanatban a palya[j,k] rtknek kiszmtshoz az elz idpillanat olyan palya[x,y] rtkeit kell figyelembe venni, ahol x<j vagy (x=j s y>=k), ezrt nincs szksg j tmbre; az els paramterre nzve cskken, azon bell a msodik paramterre nzve nvekv sorrendben trhat az elz idpillanatra vonatkoz rtkeket trol 'palya' tmb a jelenlegi idpillanatnak megfelelre.

Ezutn az adott idpillanatban ppen piros lmpk (szem eltt tartva, hogy az intervallumok balrl nyltak) miatt lehetetlen pozci-sebessg kombincik rtkt mindenkpp hamisra vltoztatja. Pl. ha a 10. koordintj pontban a lmpa pp piros, akkor a 10. koordintj pontba semekkora (0-val sem), a 11. koordintj pontba legfeljebb 1 (ha a lmpa pp egy idegysggel elbb vltott pirosra, ha nem gy van, akkor eleve nem tartzkodhatott a villamos a 10. koordintj pontban az elz idpillanatban), a 12. koordintj pontba legfeljebb 2, ... egysgnyi sebessggel rkezhetett a villamos. A k=0 esetet kln kell kezelni, hogy kikszbljk azt az esetet, amikor a villamos rparkolna a piros lmpra.

Ezzel megkapjuk, hogy az adott idpillanatban hol tartzkodhat a villamos, s mekkora sebessggel rhetett oda. Ha tartzkodhat 'l'-nl nagyobb (vagy egyenl) koordintj pontban, akkor vget rt a keress, hiszen megtalltuk, hogy a lehet leghamarabb (legkorbbi idpillanatban) mikor rhet be a villamos. Ha tbb megfelel pozci-sebessg kombinci is van, akkor kivlasztja azt, amelyikkel a leghamarabb rte el a clt (amelyikre a legkisebb a clbars idejnek trtrsze, ami (l-(j-k))/k, ahol j a pozci, k a sebessg s l az plya hossza).

Ha a villamos clba rt, akkor kirjuk a tv teljestshez szksges minimlis idt s a program lell, klnben elindul a kvetkez idpillanat lehetsges helyzeteinek kiszmtsa.