infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva educationala => Subiect creat de: Panaete Adrian din Martie 03, 2013, 00:05:20



Titlul: 056 Aria
Scris de: Panaete Adrian din Martie 03, 2013, 00:05:20
Aici puteţi discuta despre problema Aria (http://infoarena.ro/problema/aria).


Titlul: Răspuns: 056 Aria
Scris de: Simoiu Robert din Martie 03, 2013, 11:53:40
Merge cu long double, rezultatele sunt puse toate pe long double in .ok (http://infoarena.ro/job_detail/903871). Diferenta este ca solutia pe care-am propus-o eu, din cate am vazut, da rezultatele cu double pentru a 4-a zecimala corecte exact ca si long double. Probabil ca double-ul nu este la fel de precis in toate cazurile. Eu am facut .ok cu sursa mea cu long double, desi sursa oficiala e pe double. Se pare ca la mine merge double-ul, dar probabil in alte implementari nu merge.
[LE] Si inca ceva, referitor la acest topic (http://infoarena.ro/forum/index.php?topic=8751.msg63353), evaluatorul facut de mine este bazat pe stringuri, nicidecum pe double-uri sau pe altceva. Pur si simplu citesc cele 2 numere, adaug cate 4 zerouri la sfarsit sa fiu sigur ca sunt cel putin 4 dupa virgula, si le compar, atata tot :).


Titlul: Răspuns: 056 Aria
Scris de: Panaete Adrian din Martie 03, 2013, 12:18:13
Nu ai inteles ce am vrut sa spun. Ma refer la faptul ca in mod obisnuit noi evaluam la cate zecimale dupa virgula se potrivesc rezultatele. Normal ar fi sa apreciem precizia unui rezultat dupa numarul de cifre semnificative fara sa conteze ca diferenta apare la cifra zecimilor, sutimilor, unitatilor, zecilor sau chiar sutelor de mii. Examplu:

121315.12
121415.23

se potrivesc pe 3 cifre

0.00114
0.00125

se potrivesc pe o cifra.

Eu nu pun in discutie acolo problema particulara ci pur si simplu pun in dezbatere o filosofie de evaluare. Fara ca asta sa spuna ca am si dreptate :)

L.E. Nici eu nu intelesesem ce vrei sa spui cu merge pe long double. Acum am inteles.


Titlul: Răspuns: 056 Aria
Scris de: Popa Razvan din Aprilie 23, 2013, 21:00:44
De ce daca fac infasuratoarea convexa si apoi calculez aria imi da gresit pe testele mai mari?

Am patit-o la un concurs cand trebuia sa faci infasuratoarea mai intai, si ma chinui sa aflu care e problema.


Titlul: Răspuns: 056 Aria
Scris de: George Marcus din Aprilie 23, 2013, 21:18:23
De ce daca fac infasuratoarea convexa si apoi calculez aria imi da gresit pe testele mai mari?

Am patit-o la un concurs cand trebuia sa faci infasuratoarea mai intai, si ma chinui sa aflu care e problema.

Subtil. Foarte subtil  :wink:


Titlul: Răspuns: 056 Aria
Scris de: Popa Razvan din Aprilie 23, 2013, 22:02:49
De ce daca fac infasuratoarea convexa si apoi calculez aria imi da gresit pe testele mai mari?

Am patit-o la un concurs cand trebuia sa faci infasuratoarea mai intai, si ma chinui sa aflu care e problema.

Subtil. Foarte subtil  :wink:

Da, are legatura si cu asta, dar chiar am patit-o, de asta mi-am adus aminte.  

Problema 2 – Sume

La concursul de programare organizat de Colegiul National de Informatica Piatra Neamt au sosit delegatii din N orase ale lumii. In pliantul  realizat de organizatori este marcata pozita geografica a fiecarei delegatii prin doua numere natural (abscisa si ordonata) corespunzatoare unui sistem de axe matematizat.
La inscrierea in concurs fiecare delegatie transmite organizatorilor o lista cu cinci numere naturale  x, y, a, b, c cu semnificatia urmatoare:
•   x - abscisa orasului de unde vine delegatia;
•   y - ordonata  orasului de unde vine delegatia;
•   a - numarul de elevi ai delegatiei ce participa la concursul grupei mici;
•   b - numarul de elevi ai delegatiei ce participa la concursul grupei mijlocii;
•   c - numarul de elevi ai delegatiei ce participa la concursul grupei mari;
Suma de lei alocata fiecarei grupe de concurs se determina astfel:
•   dublam aria poligonului convex de arie minima  ce contine in interior sau pe frontiera punctele pozitiilor geografice de unde provin participantii la concursul grupei respective obtinand numarul de lei alocat pentru premiile I, II, III si Mentiuni;
•   fiecare participant din concurs primeste 50 de lei pentru transportul local si 100 de lei pentru servirea meselor pe perioada concursului;
Cerinta
Determinati sumele de lei alocate fiecarei grupe de concurs.
Date de Intrare
Pe prima linie a fisierului de intrare sume.in se afla numarul natural N, reprezentand numarul de delegatii  participante la concurs. Pe fiecare din urmatoarele N linii se afla cinci numere naturale separate de spatii. Fiecare dintre aceste N linii caracterizeaza  o delegatie iar ordinea si sensul numerelor pe linnie este prezentata in enunt: x  y  a  b  c
Date de Iesire
In fisierul de iesire sume.out se vor scrie trei numere natural altfel:
•   pe prima linie un numar natural ce reprezinta suma de lei alocata grupei mici;
•   pe a doua linie un numar natural ce reprezinta suma de lei alocata grupei mijlocii;
•   pe a treia linie un numar natural ce reprezinta suma de lei alocata grupei mari;
Restrictii
•   4<= N <=500000;     0<= x, y <=30000;   0<= a, b, c <=9;
•   La fiecare grupa de concurs exista participanti din cel putin trei orase diferite;
•   Nu sunt doua delegatii din acelasi oras;

Exemplu
sume.in   sume.out
5
0 0 0 2 3
3 3 1 2 3
4 4 1 0 3
4 0 1 2 0
0 4 1 2 3   616
1224
1816

Timp maxim de executie/test: 1.0 secunde
Limite de memorie: total memorie disponibila 24 Mb.


Daca te uiti la rezultate la a 12-a ai sa vezi ca ala de pe locu 3(eu) a luat 20p cu greseala asta.


Titlul: Răspuns: 056 Aria
Scris de: Cretu Bogdan din Iunie 18, 2013, 17:22:14
Niste idei despre modul de aflare al coord de intersectie a celor 2 polig???
 :D :D :D ceva nu foarte complicat...cam pentru a 10-a intensiv.
Multumesc.


Titlul: Răspuns: 056 Aria
Scris de: CHIRILA ADRIAN din Noiembrie 04, 2013, 08:25:16
De ce obtin doar 50 p? http://www.infoarena.ro/job_detail/1021687?action=view-source (http://www.infoarena.ro/job_detail/1021687?action=view-source) ..am calculat aria cu ajutorul determinantului si evaluatorul imi transmite :"Mai incearca "


Titlul: Răspuns: 056 Aria
Scris de: George Marcus din Noiembrie 04, 2013, 09:07:38
abs() ? Citeste indicatiile de la problema.


Titlul: Răspuns: 056 Aria
Scris de: Lup Vasile din Martie 25, 2014, 18:10:46
De ce solutia oficiala afiseaza doar 5 zecimale(stiu ca asa e cerinta, dar nu vad unde scrie in sursa sa se afiseze numai primele 5 zecimale). Sau ce inseamna ca trebuie afisat cu o precizie de 10^(-5)?


Titlul: Răspuns: 056 Aria
Scris de: Roman Tudor din Ianuarie 15, 2016, 11:39:10
Înseamnă că trebuie să afișezi rezultatul cu 5 zecimale. De exemplu, poți include librăriile "cmath" și "iomanip" și să afișezi rezultatul sub forma "fout << fixed << setprecision (5) << abs (rezultatul obținut);". Funcția "abs" îți oferă rezultatul întotdeauna pozititv. Dacă ai un rezultat de forma "-x" sau "x", se va afișa întotdeauna pozitiv, adică "x".