Sunteți pe pagina 1din 4

Pregatire ONI 2013

__________________

Problema 2 – Biliard

Gigel s-a hotărât să realizeze un joc de biliard. Pentru a scrie acest program, a studiat mai multe jocuri
asemănătoare de pe Internet, apoi s-a apucat de o variantă premergătoare a jocului în care studiază
ciocnirea cu peretele şi căderea bilei în buzunarul mesei de biliard. Masa de biliard este un dreptunghi
de dimensiuni mxn. In cele patru colţuri ale mesei există câte un buzunar. Bila este reprezentată printr-
un punct şi are o mişcare uniformă liniară, adică are viteză constantă de-a lungul unei drepte. În
momentul ciocnirii cu un perete, bila se va reflecta cu acelaşi unghi faţă de perete pe care l-a avut
înainte de ciocnire.

În timpul creării programului, Gigel s-a confruntat cu problema poziţiilor intermediare de coordonate
reale. Şi pentru a avea control asupra datelor problemei, a introdus următoarele reguli:

1. Deplasarea bilei va fi definită prin perechea (x,y), ceea ce înseamnă că într-o unitate de timp bila va
parcurge o distanţă de traiectorie oblică ce corespunde distanţei x pe axa orizontală şi distanţei y pe
axa verticală. Astfel chiar dacă drumul trece prin puncte de coordonate reale, după fiecare unitate de
timp va ajunge într-un punct cu coordonate întregi.

2. Pe parcursul mişcării bilei, buzunarele sunt închise şi se deschid pentru câte o clipă după ce a trecut
exact o unitate de timp, apoi iar se închid şi se vor deschide din nou după expirarea următoarei unităţi
de timp, ş.a.m.d. Dacă bila se află la vreun buzunar când acesta este deschis, ea va cădea în buzunar,
altfel bila îşi va continua traiectoria printr-o întoarcere de 180 de grade fapt datorat ciocnirii cu colţul
mesei.

Cele patru colţuri ale mesei sunt numerotate astfel:


1- colţul stânga jos (0,0)
2- colţul dreapta jos (m,0)
3- colţul stânga sus (0,n)
4-colţul dreapta sus (m,n).

Poziţia iniţială a bilei este în punctul (0,0) care în momentul începerii jocului este închis.

În figura de mai sus vedem o masă de dimensiuni 6x7. Bila a fost lansată din colţul 1 cu viteza pe
unitate de timp (4,2). S-a trasat traiectoria bilei până la expirarea momentului 4, în acel moment bila a
ajuns în punctul de coordonate (4,6). Din acest desen se vede că atât cu peretele vertical (pasul 2), cât
şi cu peretele orizontal (pasul 4), traiectoria bilei şi-a păstrat unghiul. Dacă s-ar continua desenarea

______________________

Palatul Copiilor Giurgiu


Pregatire ONI 2013
__________________

traiectoriei bilei, am observa că în al 11-lea interval de timp avem o ciocnire de 180 de grade în colţul
4, iar după terminarea intervalului de timp 21 bila va cădea în buzunarul 1.

______________________

Palatul Copiilor Giurgiu


Pregatire ONI 2013
__________________

Cerinţă
Scrieţi un program care să determine poziţia finală a bilei după trecerea a t unităţi de timp, cunoscând
coordonatele dimensiunile masei de biliard mxn respectiv direcţia şi forţa loviturii date de perechea
(x,y).
Date de intrare
Fişierul de intrare biliard.in conţine pe prima linie numerele naturale m şi n separate prin spaţiu. Linia a
doua conţine valorile x şi y separate prin spaţiu. Linia a treia conţine valoarea lui t.
Date de ieşire
Fişierul de ieşire biliard.out va conţine o singură linie pe care vor fi scrise două numere separate prin
spaţiu. Semnificaţia acestor două numere diferă în funcţie de situaţie (dacă bila este pe masă sau dacă
este într-un buzunar). Dacă bila este pe masă după expirarea celor t unităţi de timp, atunci se vor afişa
coordonatele finale xf, respectiv yf ale bilei. Dacă bila a căzut într-un buzunar, atunci se va afişa
numărul de unităţi t1 trecute până la ajungerea bilei în buzunar, respectiv numărul b al buzunarului în
cauză.
Restricţii
▪ 1 <= m, n, x, y <= 2 147 483 647
▪ Pentru 40% dintre teste 1 <= m, n, x, y <= 32 767
Exemple:
biliard.in biliard.out Explicaţie

67 46 Datele de intrare sunt conform exemplului din figura de mai sus, masa
42 de biliard este de dimensiuni 6x7, într-o unitate de timp, bila se va
4 deplasa 4 unităţi de măsură pe orizontală şi 2 unităţi de măsură pe
verticală. După 4 unităţi de timp bila se va afla în punctul de
coordonate (4,6)

biliard.in biliard.out Explicaţie

67 21 1 Datele de intrare sunt conform exemplului din figura de mai sus, masa
42 de biliard este de dimensiuni 6x7, într-o unitate de timp, bila se va
24 deplasa 4 unităţi de măsură pe orizontală şi 2 unităţi de măsură pe
verticală. După trecerea a 21 unităţi de timp bila va cădea în buzunarul
1, în consecinţă bila nu va mai fi pe masă după trecerea celor 24 de
unităţi de timp.

______________________

Palatul Copiilor Giurgiu


Pregatire ONI 2013
__________________

Timp maxim de execuţie/test: 0.1 secunde


Memorie totală disponibilă/stivă: 16MB/1 MB

______________________

Palatul Copiilor Giurgiu

S-ar putea să vă placă și