Problema lunii: OZN în lan

Știm că extratereștrilor le place să aterizeze în lanurile de porumb. Ei vin cu OZN-uri și aleg cel mai interesant lan în care să aterizeze. De data aceasta au ales un lan în care firele de porumb sunt amplasate echidistant unele față de altele, pe ambele direcții. Practic, lanul poate fi văzut ca un plan în care punctele de coordonate întregi sunt ocupate de fire de porumb.

Din motive de ei știute, extratereștri au ales acum să folosească o navă triunghiulară, nu o farfurie. Și mai ciudat, au văzut că pot ateriza astfel încât cele trei vârfuri ale navei să se suprapună exact pe câte un fir de porumb. Deci, putem spune că "amprenta" la sol a navei extraterestre este un triunghi ale cărui vârfuri au și ele coordonate întregi.

Așa cum au venit, au și plecat, iar nouă ne rămâne să evaluăm pagubele. Va trebui să numărăm firele de porumb distruse. Un fir este distrus dacă se află în vârfurile, pe laturile sau în interiorul triunghiului care reprezintă amprenta navei.

Datele de intrare se citesc de la intrarea standard și constau în trei perechi de numere întregi, fiecare dintre ele reprezentând coordonatele unuia dintre vârfurile navei. Cele trei puncte nu sunt coliniare, iar coordonatele sunt cuprinse între -1000000 și 1000000.

Datele de ieșire se scriu la ieșirea standard; se va scrie un singur număr.

Exemplu

Intrare
3 1 1 5 5 4

Ieșire
10

Te-ar putea interesa și:

  • Tiberiu

    #include

    #include

    #include

    using namespace std;

    void aria(double a,double b,double c){

    double p,x;

    p = (a + b + c)/2;

    x = sqrt(p*(p-a)*(p-b)*(p-c));

    cout<<x+3;

    }

    void citire(int (&v)[100],int &ok){

    int i=1;

    do{

    cout<<"a["<<i<>v[i];

    if(v[i] 1000000){

    ok = 0;}

    i++;

    }while(i<7);

    }

    int main()

    {

    int v[100],ok=1;

    double l1,l2,l3;

    citire(v,ok);

    l1 = sqrt(pow(v[3]-v[1] , 2) + pow(v[4]-v[2],2));

    l2 = sqrt(pow(v[5]-v[3],2) + pow(v[6]-v[4],2));

    l3 = sqrt(pow(v[5]-v[1] ,2) + pow(v[6]-v[2],2));

    if (ok == 1)

    aria(l1,l2,l3);

    else

    return 0;
    }

    aproximativ?

    • Mihai Scorţaru

      Nu mi-e foarte clar din cauză că s-a pierdut formatarea, dar programul pare să calculeze doar aria triunghiului.