# Secret Meeting (teleport2) 10/100

**URL:** <https://forum.olinfo.it/t/secret-meeting-teleport2-10-100/5926>\
**Category:** Aiuto\
**Created:** [22 Novembre 2019, 10:29pm UTC](https://forum.olinfo.it/t/secret-meeting-teleport2-10-100/5926 "2019-11-22T22:29:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Number33](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/n/3da27b/32.png) [@Number33](https://forum.olinfo.it/u/Number33)\
**Post date:** [22 Novembre 2019, 10:29pm UTC](https://forum.olinfo.it/t/secret-meeting-teleport2-10-100/5926/1 "2019-11-22T22:29:55Z")

</div>

Salve a tutti, premetto che questo è il mio primo post in assoluto sul forum. Ho riscontrato un problema con teleport2 in quanto ottengo sempre e solo 10 punti pure sembrandomi corretta la soluzione; di seguito il mio codice commentato. Illuminatemi su eventuali miei errori o sviste, grazie in anticipo.

```
#include <stdio.h>
#include <assert.h>
#include <math.h>   

int T, i;   
int Xa, Ya, Xb, Yb, Xc, Yc, R;
double result = 0;

//funzione che calcola la distanza tra blatte senza passare dal letto
double sd (int Xa, int Ya, int Xb, int Yb)
{
    return sqrt(pow(Xa-Xb, 2)+pow(Ya-Yb, 2));    
}
//funzione che calcola la distanza tra blatte passando dal letto (sommo la distanza delle blatte dal centro del letto e tolgo il raggio * 2 (distanza tra il bordo e il centro del letto))
double bd (int Xa, int Ya, int Xb, int Yb, int Xc, int Yc, int R)
{
    double tmp1=sqrt(pow(Xa-Xc, 2)+pow(Ya-Yc, 2));
    double tmp2=sqrt(pow(Xb-Xc, 2)+pow(Yb-Yc, 2));
    return (tmp1+tmp2)-(R*2);
}

int main() {
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);

    assert(1 == scanf("%d", &T));
    for(i=0; i<T; i++) 
    {
        assert(7 == scanf("%d %d %d %d %d %d %d",
                    &Xa, &Ya, &Xb, &Yb, &Xc, &Yc, &R));
        
        //se a è dentro il letto calcolo la distanza di b dal bordo
        if((sd(Xa, Ya, Xc, Yc)<=R))
        {
            result=(sqrt(pow(Xb-Xc, 2)+pow(Yb-Yc, 2))-R);
        }
        //se b è dentro il letto calcolo la distanza di a dal bordo
        else if((sd(Xb, Yb, Xc, Yc)<=R))
        {
            result=(sqrt(pow(Xa-Xc, 2)+pow(Ya-Yc, 2))-R);
        }
        //se entrambe sono sul letto non fanno rumore
        else if ((sd(Xa, Ya, Xc, Yc)<=R)&&(sd(Xb, Yb, Xc, Yc)<=R))
        {
            result=0;
        }
        //se tutte e due sono fuori dal letto
        else
        {
            //confronto se conviene passare dal letto o meno
            if(sd(Xa, Ya, Xb, Yb)<bd(Xa, Ya, Xb, Yb, Xc, Yc, R))
                result=sd(Xa, Ya, Xb, Yb);
            else result=bd(Xa, Ya, Xb, Yb, Xc, Yc, R);
        }
        result = floor(result * 1000000) / 1000000;
        printf("%.6f\n", result);
        result=0;
    }
    return 0;
}
```

---

<div class="post-metadata">

**Author:** ![lorenzocazzador](https://forum.olinfo.it/user_avatar/forum.olinfo.it/lorenzocazzador/32/548_2.png) [@lorenzocazzador](https://forum.olinfo.it/u/lorenzocazzador)\
**Post date:** [22 Novembre 2019, 11:00pm UTC](https://forum.olinfo.it/t/secret-meeting-teleport2-10-100/5926/2 "2019-11-22T23:00:46Z")

</div>

E’ un errore molto banale, prova a rivedere l’ordine degli if 😉

---

<div class="post-metadata">

**Author:** ![Number33](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/n/3da27b/32.png) [@Number33](https://forum.olinfo.it/u/Number33)\
**Post date:** [23 Novembre 2019, 9:10am UTC](https://forum.olinfo.it/t/secret-meeting-teleport2-10-100/5926/4 "2019-11-23T09:10:44Z")

</div>

Okay grazie mille trovato l’errore, ho verificato per primo il fatto che i bugs si trovassero entrambi dentro il letto.
