Diferente pentru monthly-2012/runda-9/solutii intre reviziile #9 si #8

Nu exista diferente intre titluri.

Diferente intre continut:

!<elfus/editorial-runda-9?img1.bmp!
Acum locatarul nostru trebuie sa se plimbe pe conturul cercului (pornind din x si ajungand in y). El se poate plimba fie in sens trigonometric (reprezentat cu rosu in desenul din stanga) fie in sens orar (reprezentat cu albastru). Nu are niciun rost ca locatarul sa-si aleaga un sens de deplasare si apoi, undeva in drumul sau sa si-l schimbe. Practic schimbarea sensului va anula ce a mers el inainte, crescand distanta parcursa de el inutil. Asadar, distanta minima va fi minimul dintre distanta obtinuta daca ar alege sensul rosu si distanta obtinuta daca ar alege sensul albastru.
 
Vom calcula concret distantele pentru cele doua sensuri. Sa presupunem ca locatarul trece prin cladirile x, x1, x2, ..., xn, y. Distanta parcursa va fi dist(x, x1) + dist(x1, x2) + ... + dist(xn-1, xn) + dist(xn, y). Dar distanta dintre oricare 2 constructii consecutive este 1, deci distanta totala parcursa este defapt numarul de cladiri diferite de x prin care trece locatarul.
 
Pentru sensul rosu, cum x < y, locatarul va trece intotdeauna prin cladirile x + 1, x + 2, ..., y - 1, y. Numarul acestora este y - (x + 1) + 1 = y - x. Pentru sensul albastru, locatarul va trece prin cladirile x - 1, x - 2, ..., 2, 1, 2 * N, 2 * N - 1, ..., y + 1, y. Pentru a calcula numarul de cladiri prin care locatarul in acest caz, vom imparti in doua calculele. Intai vom calcula distanta dintre x - 1 si 1, apoi distanta dintre 1 si y. Astfel, distanta parcursa pe portiunea x - 1 si 1 este (x - 1) - 1 + 1 = x - 1. Distanta pe portiunea 1 si y este distanta de pe portiunea 2 * N si y plus 1. Pe portiunea 2 * N si y, locatarul va trece prin orasele 2 * N - 1, 2 * N - 2, ..., y + 1, y. Deci distanta pe portiune este 2 * N - 1 - y + 1 = 2 * N - y. Distanta totala pe banda albastra este x - 1 + 1 + 2 * N - y = x + 2 * N - y. In concluzie, distanta dintre orasele x si y este min(y - x, x + 2 * N - y).
 
Acum locatarul nostru trebuie sa se plimbe pe conturul cercului (pornind din x si ajungand in y). El se poate plimba fie in sens trigonometric (reprezentat cu rosu in desenul de mai sus) fie in sens orar (reprezentat cu albastru). Nu are niciun rost ca locatarul sa-si aleaga un sens de deplasare si apoi, undeva in drumul sau sa si-l schimbe. Practic schimbarea sensului va anula ce a mers el inainte, crescand distanta parcursa de el inutil. Asadar, distanta minima va fi minimul dintre distanta obtinuta daca ar alege sensul rosu si distanta obtinuta daca ar alege sensul albastru.
Vom calcula concret distantele pentru cele doua sensuri.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.