1 - Nadkvadrat
Vremensko ograničenje | Memorijsko ograničenje |
---|---|
100ms | 32MB |
Dobro je poznato (još od 1888. godine i Ničeovog dela Sumrak idola) da ono što nas ne ubije - to nas ojača. Tako je i sa tačkama, kvadratima, takmičarima, pa i samom komisijom... Ako već ne može da kao ranije organizuje tri kruga kvalifikacija, komisija može zadati tri tajna broja (videti prošli krug) i tri javne tačke u ravni (gledate ih upravo). Ako već tačno tri godine, još od doba poslednje pandemije (i drugog kruga kvalifikacija školske 2020/2021. godine), niko i dalje ne pita kako je kvadrat?, a on preživi, postaće nadkvadrat (nem. Überquadrat) i obuhvatiće sve tri javno zadate tačke!
Naime komisija je zadala tačno tri tačke u Dekartovom pravouglom koordinatnom sistemu u ravni definisane celobrojnim koordinatama \((x_1, y_1)\), \((x_2, y_2)\) i \((x_3, y_3)\). Vaš zadatak je da pronađete površinu najmanjeg kvadrata sa stranicama paralelnim koordinatnim osama koji ih sadrži, odnosno obuhvata sve tri zadate tačke!
Opis ulaza
U prva i jedina tri reda standardnog ulaza nalaze se celobrojne koordinate tačaka i to: u prvom redu \((x_1, y_1)\), u drugom redu \((x_2, y_2)\) i u trećem redu \((x_3, y_3)\). U svakom redu koordinate \(x\) i \(y\) su razdvojene razmakom.
Opis izlaza
U prvom i jedinom redu standardnog izlaza, ispisati površinu najmanjeg kvadrata sa stranicama paralelnim koordinatnim osama, odnosno pravama \(x=0\) i \(y=0\), koji obuhvata tri zadate tačke.
Primer 1
Ulaz
Izlaz
Objašnjenje
Tri tačke koje su zadate mogu se obuhvatiti kvadratom čije će donje levo teme biti u koordinati \((1, 1)\), a gornje desno teme u koordinati \((3, 3)\) te je njegova površina \(2^2=4\).
Primer 2
Ulaz
Izlaz
Objašnjenje
Tri tačke koje su zadate mogu se obuhvatiti kvadratom čije će donje levo teme biti u koordinati \((-2, -3)\), a gornje desno teme u koordinati \((3, 2)\) te je njegova površina \(5^2=25\).
Primer 3
Ulaz
Izlaz
Objašnjenje
Tri tačke koje su zadate mogu se obuhvatiti kvadratom čije će donje levo teme biti baš u koordinati \((1, 2)\), što je zapravo prvozadata tačka, a gornje desno teme u koordinati \((5, 6)\), što je trećezadata tačka, te je njegova površina \(4^2=16\).
Ograničenja
\(-10^9 \leq x_1, x_2, x_3, y_1, y_2, y_3 \leq 10^9\)
Test primeri su podeljeni u četiri disjunktna skupa:
- U testovima vrednim 30 poena: koordinate su nenegativne \(0 \leq x_1, x_2, x_3, y_1, y_2, y_3 \leq 10^4\)
- U testovima vrednim 30 poena: \(-10^4 \leq x_1, x_2, x_3, y_1, y_2, y_3 \leq 10^4\)
- U testovima vrednim 30 poena: tri tačke su još i kolinearne
- U testovima vrednim 10 poena: Bez dodatnih ograničenja.
Napomena
Smatrati da kvadrat obuhvata, odnosno sadrži tačku čak i ako se ona nalazi na njegovoj stranici ili u temenu.
Autor | Tekst i test primeri | Analiza rеšenja | Testiranje |
---|---|---|---|
Vladimir Milovanović | Vladimir Milovanović | Vladimir Milovanović | Aleksandar Višnjić |
Glavno rešenje
Za rešenje zadatka dovoljno je pronaći masimum i minimum po svakoj koordinati od tri zadate tačke, a zatim kvadrirati veću od razlika dveju koordinata. Drugim rečima, ako su tri tačke u Dekartovom koordinatnom sistemu zadate koordinatama \((x_1, y_1)\), \((x_2, y_2)\) i \((x_3, y_3)\), tada je najpre neophodno pronaći \(x_\max = \max(x_1, x_2, x_3)\) i \(x_\min = \min(x_1, x_2, x_3)\), te \(y_\max = \max(y_1, y_2, y_3)\) i \(y_\min = \min(y_1, y_2, y_3)\). Da se u zadatku tražila površina minimalnog obuhvatajućeg pravougaonika, onda bi dužine stranica tog pravougaonika bile \(\Delta x = x_\max - x_\min\) i \(\Delta y = y_\max - y_\min\). Međutim, s obzirom da se traži površina minimalnog obuhvatajućeg kvadrata, to je stranica kvadrata zapravo \(\max(\Delta x, \Delta y)\), a površina tog kvadrata \((\max(\Delta x, \Delta y))^2\) do čega se dolazi u konstantnoj vremenskoj i prostornoj složenosti \(\mathcal{O}(1)\). Za sve poene (poslednji podzadatak) bilo je neophodno primetiti implementacijski detalj da kvadriranjem neke velike vrednosti može doći do prekoračenja, pa je u programskom jeziku C rezultat neophodno smestiti u neki dovoljno veliki ceo broj (konkretno long long
u ovom slučaju).
Da je umesto tri, u opštijem slučaju bilo zadato \(N\) tačaka u prostoru, mogao bi se primeniti identičan algoritam, a njegova složenost bila bi \(\mathcal{O}(N)\), to jest linearna po broju zadatih tačaka čije se obuhvatanje kvadratom traži.
01_nadkvadrat.cpp | |
---|---|