Pagini recente » Cod sursa (job #824640) | Cod sursa (job #2986585) | Cod sursa (job #584003) | Cod sursa (job #1189025) | Cod sursa (job #3246031)
facem un vector in care pe pozitia i avem pozitia din vectorul intial in care se afla elementul care este pe pozitia i in vectorul ordonat
ordonam tarusii
luam toate perechile de 2 tarusi la intamplare O(n^2)
fiecare doua perechi delimiteaza 2 semiplane in plan (in teren) O(n^3)
facem ingradire circulara pentru fiecare semiplan cu o stiva, daca la final avem toate elementele in stiva inseamna poligonul este convex
daca unul dintre numere este scos din stiva atunci poligonul este concav si nu respecta cerintele problemei
cazurile in care in ambele semiplane avem cate un poligon concav sunt valide calculam minul diferentei absolute ale ariilor lor
ariile le vom calcula impartind fiecare poligon in triunghiuri folosind stivele aferente
avand coordonatele fiecarui tarus intr-un struct
putem calcula aria triunghiului delimitat de 3 tarusi folosind formula
A = (1/2) |x1(y2 − y3) + x2(y3 − y1) + x3(y1 − y2)| - nu avem nevoie de div 2
dupa folosim vectorul de pozitii pentru a crea impartirea tarusilor (ex:IIVVIIV) intrun vector de char
daca diferenta este egala cu min comparam valorile vectorului de char (cum int(I)<int(V)) trebuie doar sa comparam valorile din vector si sa iesim din bucla daca da o valore mai mica
daca da o valoarea mai mica si iese din bucla inlocuim impartirea tarusilor minima cu noua impartire a tarusilor care este mai mica