excursie

Time limit: 0.05s Memory limit: 2MB Input: excursie.in Output: excursie.out

Gigel este un mare amator de excursii la munte. În acelaşi timp este şi un bun informatician. El a observat că făcând un traseu între două obiective turistice oboseşte mai puţin decât dacă alege un alt traseu între aceleaşi obiective. Gigel şi-a propus să găsească un model care să-i permită determinarea unui traseu pe care, dacă-l alege, va ajunge la destinaţie cât mai puţin obosit. Astfel, el reprezintă terenul în care se află cele două obiective turistice printr-un tablou bidimensional cu nn linii (numerotate de la 11 la nn) şi mm coloane (numerotate de la 11 la mm), cu elemente numere naturale strict pozitive, în care fiecare element reprezintă cota unei zone de teren de forma unui pătrat cu latura 1 m1 \ m. Efortul pe care-l face pentru a trece dintr-o zonă cu cota c1c_1 într-o zonă vecină cu o cotă mai înaltă (c2c_2) se calculează după cum urmează. Se trasează un triunghi dreptunghic ca în figură:

  • c1c_1 şi c2c_2 sunt cele două cote, c1<c2c_1 < c_2
  • 11 este distanţa dintre centrele celor două zone vecine
  • d=(c2c1)2+1d = \sqrt{(c_2 - c_1)^2 + 1}
  • α\alpha este unghiul pantei care trebuie urcată

Apoi calculează efortul astfel: ef=dtg αef = d \cdot tg \ \alpha.

În exemplul următor considerăm patru zone vecine având cotele 11, 22, 66, 1010. Pentru a ajunge din zona de cotă 11 în zona de cotă 1010 se pot alege două trasee:

  1. direct, ceea ce presupune un efort calculat astfel:
    • ef=dtgα=82981ef = d \cdot tg \alpha = \sqrt{82} \cdot 9 \approx 81.
  2. ocolit, prin zonele de cote 22 şi 66, ceea ce presupune un efort calculat astfel:
    • ef=ef1+ef2+ef3=2+174+17434ef = ef_1 + ef_2 + ef_3 = \sqrt{2} + \sqrt{17} \cdot 4 + \sqrt{17} \cdot 4 \approx 34.

Efortul pe care-l face pentru a trece dintr-o zonă având cota c1c_1 într-o zonă vecină cu aceeaşi cotă este 11. Efortul pe care-l face pentru a trece dintr-o zonă având cota c1c_1 într-o zonă vecină cu o cotă mai joasă (c2c_2) este jumătate din efortul pe care l-ar face la urcare (adică de la cota c2c_2 la cota c1c_1).

Cerinţă

Scrieţi un program care să determine efortul minim pentru a ajunge de la un obiectiv turistic la altul, lungimea traseului nedepăşind o valoare dată LmaxL_{max}.

Date de intrare

Fişierul de intrare excursie.in conţine:

  • pe prima linie două numere naturale nn şi mm separate printr-un spaţiu, reprezentând dimensiunile terenului;
  • pe linia a doua numărul real LmaxL_{max} reprezentând lungimea maximă admisă a drumului;
  • următoarele nn linii conţin fiecare câte mm valori naturale, separate prin spațiu, reprezentând în ordine cotele zonelor de teren;
  • ultima linie conţine patru valori naturale lil_i, cic_i, lfl_f, cfc_f, separate prin câte un spaţiu, unde lil_i, cic_i reprezintă linia şi respectiv coloana punctului de plecare, iar lfl_f, cfc_f reprezintă linia şi respectiv coloana punctului de sosire.

Date de ieșire

Fişierul de ieşire excursie.out va conţine pe prima linie două numere reale separate printr-un spaţiu ef def \ d, reprezentând efortul minim depus pentru a ajunge de la un obiectiv la altul şi respectiv lungimea minimă a unui drum parcurs cu efort minim. Rezultatele vor fi afişate cu câte trei zecimale.

Restricții și precizări

  • 2n,m502 \leq n, m \leq 50
  • Deplasarea dintr-o zonă în alta se poate face doar în 44 direcţii: (NN, EE, SS, VV). Mai exact, dacă poziţia curentă este pe linia ii, coloana jj, prin deplasare la NN se trece în poziţia (i1,ji-1, j), la EE în (i,j+1i, j+1), la SS în (i+1,ji+1, j), iar la VV în (i,j1i, j-1). (dacă aceste poziţii există).
  • Cotele sunt numere naturale cu valori între 11 şi 100100.
  • Se recomandă utilizarea tipurilor reale pe 6464 biţi. Rezultatul va fi considerat corect dacă diferenţa absolută dintre rezultatul afişat şi rezultatul corect este < 0.010.01
  • Se acordă 60%60\% din punctaj pentru determinarea corectă a efortului minim, respectiv 100%100\% pentru rezolvarea corectă a ambelor cerinţe

Exemplu

excursie.in

2 2
11
10 6
1 2
2 1 1 1

excursie.out

34.399 9.660

Explicație

2+817=34.399(1.41421356+32.98484500=34.39905856)\sqrt{2} + 8 \cdot \sqrt{17} = 34.399 (1.41421356+32.98484500=34.39905856)
2+217=9.660(1.41421356+8.24621125=9.66042481)\sqrt{2} + 2 \cdot \sqrt{17} = 9.660 (1.41421356+ 8.24621125= 9.66042481)

Traseul este corect deoarece lungimea drumului 9.669.660 este mai mică decât valoarea dată Lmax=11L_{max} = 11

Log in or sign up to be able to send submissions!