Eesti koolinoorte matemaatikaolümpiaadidid Eesti koolinoorte informaatikaolümpiaadid Eesti koolinoorte füüsikaolümpiaadid Eesti koolinoorte keemiaolümpiaadid Astronoomiahuvilistele Eesti koolinoorte bioloogiaolümpiaadid Eesti koolinoorte geograafiaolümpiaadid Täppisteaduste Kooli informaatikaosakond

14. märts 1998. a.

Lõppvooru vanema rühma ülesanded


1. "ROHELINE LAINE" (30 punkti, 5 sekundit)

Auto sõidab punktist A punkti B mööda teed, millel on N foori. Iga foor töötab kindla graafiku järgi, näidates P sekundit punast tuld, seejärel R sekundit rohelist tuld, seejärel jälle P sekundit punast tuld jne. Igal keskööl tehakse fooridele algkäivitus ja nad alustavad tööd punase tule süütamisega. Kui auto jõuab foori alla hetkel, kui seal põleb või süttib punane tuli, ei või ta edasi sõita. Kui auto jõuab foori alla hetkel, kui seal põleb või süttib roheline tuli, sõidab ta peatumata edasi. Kirjutada programm, mis leiab, millisel hetkel peab auto välja sõitma, et ta satuks "rohelisse lainesse", st sõidaks kõigi fooride alt ilma peatumata läbi.

Sisend: Tekstifaili FOOR.SIS esimesel real on üks reaalarv, auto kiirus (V, 0 £ V £ 100 km/h). Eeldada, et auto sõidab pidevalt ja ühtlaselt selle kiirusega. Faili teisel real on teele jäävate fooride arv N (0 £ N £ 100) ja järgmisel N real igaühel kolm tühikutega eraldatud reaalarvu. Esimene arv (Ki, 0 £ Ki £ 1000km) näitab foori kaugust punktist A, teine arv (Pi, 0 £ Pi £ 60) näitab, mitu sekundit järjest põleb selles fooris punane tuli ja kolmas arv (Ri, 0 £ Ri £ 60) näitab, mitu sekundit järjest põleb selles fooris roheline tuli. Arvud Ki on kõik erinevad ja read on failis nende kasvamise järjekorras.

Väljund: Tekstifaili FOOR.VAL esimesele reale väljastada reaalarv, mis näitab, mitu sekundit pärast fooride käivitamist peab auto punktist A välja sõitma, et ta satuks "rohelisse lainesse". Väljastada tuleb vähim võimalik arv (või -1, kui "rohelist lainet" ei olegi).

Näide:

FOOR.SIS

72.0

3

2.2 30.0 30.0

5.0 40.0 20.0

7.0 20.0 20.0

FOOR.VAL

40.0


2. MENÜÜD (30 punkti, 5 sekundit)

Arvutis on menüüsüsteem, kus menüüdes on kaht liiki valikuid: käsud ja alammenüüd. Kasutaja liigub menüüvalikute vahel klahvide UP, DOWN, ENTER ja ESC abil. Klahvide UP ja DOWN abil liigub kasutaja menüüs vastavalt eelmisele ja järgmisele punktile. Klahvi ENTER abil valib kasutaja hetkel aktiivse punkti. Kui valitav punkt on alammenüü, siis avab arvuti selle menüü. Kui valitav punkt on käsk, siis täidab arvuti selle käsu ja jääb ootama järgmisi klahvivajutusi. Klahvi ESC abil sulgeb kasutaja aktiivse alammenüü ja naaseb enne seda avatud olnud menüüsse.

Sisend: Tekstifailis MENYY.SIS on 1 kuni 50 menüü kirjeldused kujul

MENU menüünimi

valik1

valik2

...

END

kus menüünimi on kuni 20-sümboliline mittetühi string. Kõigi menüüde nimed on erinevad ja alati on failis olemas menüü nimega MAIN. Iga menüü koosneb 1 kuni 20 valikust, mis võivad olla kujul

SUBMENU menüünimi

või

COMMAND käsunimi

kus menüünimi on mõne samas failis kirjeldatud menüü nimi ja käsunimi on kuni 20-sümboliline mittetühi string. Sõnade MENU, SUBMENU ja COMMAND järel on alati täpselt 1 tühik. Tekstifaili KLAHV.SIS iga rida (ridu on kuni 1000) on ühte klahvivajutust kirjeldav string: UP, DOWN, ENTER või ESC. Programm peab lugema klahvivajutused ja interpreteerima neid järgmiselt:

  • Enne esimest klahvivajutust on avatud menüü MAIN ja aktiivne on selle esimene punkt.
  • Klahvi UP vajutamisel muutub aktiivseks hetkel aktiivsele punktile eelnev punkt; kui aktiivne on antud menüü esimene punkt, saab aktiivseks selle menüü viimane punkt.
  • Klahvi DOWN vajutamisel muutub aktiivseks hetkel aktiivsele punktile järgnev punkt; kui aktiivne on antud menüü viimane punkt, saab aktiivseks selle menüü esimene punkt.
  • Klahvi ENTER vajutamisel, kui aktiivne punkt on alammenüü (SUBMENU), avaneb see alammenüü ja aktiivseks muutub tema esimene valik.
  • Klahvi ENTER vajutamisel, kui aktiivne punkt on käsk (COMMAND), kirjutatakse selle käsu nimi väljundfaili.
  • Klahvi ESC vajutamisel, kui hetkel avatud menüü ei ole peamenüü (MAIN), sulgub hetkel avatud menüü ja aktiivseks saab enne selle menüü avamist aktiivne olnud menüüpunkt.
  • Klahvi ESC vajutamisel, kui hetkel avatud menüü on peamenüü (MAIN), muutub aktiivseks selle esimene punkt.

Väljund: Tekstifaili MENYY.VAL kirjutada täidetud käsud (so klahvi ENTER abil valitud menüüpunktid, mis ei ole alammenüüd) nende täitmise järjekorras, igaüks eraldi reale. NB! Menüüsid tegelikult ekraanile MITTE JOONISTADA!

Näide:

MENYY.SIS

MENU MAIN
COMMAND Esimene
SUBMENU Teine
COMMAND Kolmas
END
MENU Teine
COMMAND Neljas
COMMAND Viies
END

KLAHV.SIS

DOWN
DOWN
ENTER
UP
ENTER
ENTER
ESC
ESC
ENTER

MENYY.VAL

Kolmas
Neljas
Esimene


3. PARKETT (40 punkti, 5 sekundit)

Ristkülikukujulise saali põrand on kaetud vanaaegse ruudukujulistest tahvlitest parketiga, kus osa tahvleid on katki. Katkiste tahvlite asendamiseks on olemas teatud hulk ristkülikukujulisi samasugustest tahvlitest koosnevaid vana parketi tükke ja piiramata arv vajaliku mõõduga uusi üksikuid parketitahvleid. Et uued tahvlid on heledamad, tahetakse põrand remontida nii, et uusi tahvleid kasutatakse võimalikult vähe. Et aga vana parketti on vaja remondiks veel mujal, ei tohi ühtegi ristkülikut katki saagida, vaid neid tuleb kasutada tervelt ja täita ülejäänud augud uute tahvlitega. Muster on parketil selline, et ristkülikuid võib 90 kraadi pöörata.

Sisend: Tekstifaili PARKETT.SIS esimesel real on kaks täisarvu M ja N (1 £ M £ 60, 1 £ N £ 60), mis näitavad vastavalt parketiridade arvu saalis ja tahvlite arvu parketireas. Järgnevad M nullidest ja ühtedest koosnevat N sümboli pikkust rida, kus 1 tähistab tervet tahvlit ja 0 katkist. Järgmisel real on ristkülikute arv K (0 £ K £ 50) ja edasi K rida, mille esimeseks sümboliks on ristkülikut tähistav suur või väike ladina täht ja tühikutega eraldatult ristküliku mõõtmed (parketitahvlites). Erinevatel ridadel on erinevad tähed.

Väljund: Tekstifaili PARKETT.VAL esimesele reale kirjutada ristkülikuid kasutades asendatud parketitahvlite arv. Järgmisele M reale kirjutada leitud paigutus, jättes kõik sisendfaili sümbolid 1 alles, kirjutades iga ristkülikuga kaetavatele kohtadele seda ristkülikut tähistava tähe ja jättes uute tahvlitega kaetavate aukude kohale sümbolid 0.

Näide:

PARKETT.SIS

5 3
100
100
001
001
000
4
a 2 2
b 2 3
F 5 1
G 3 1

PARKETT.VAL

8
1F0
1F0
GF1
GF1
GF0

Hindamine: Iga testi eest antavad punktid määrab leitud paigutuses kasutatud vanade tahvlite arvu protsent võrreldes parima võimaliku paigutusega. Näites toodud vastuse eest saab 80 protsenti sellele testile määratud punktidest, sest on võimalik katta ristkülikutega 10 tahvlit. Kui väljastatud paigutus ei vasta ülesande tingimustele (asendatud on terveid tahvleid, ristkülikute kuju on muudetud vms), antakse selle testi eest 0 punkti.


Palume saata kõik küsimused aadressil ttkool@ut.ee
Viimati muudetud: 28.01.1999. a.