Secret Meeting Aiuto

Scusate per il disturbo, stavo provando a risolvere il problema Teleport2,ma sono incappato in una sfilza di 0/100 con punteggio massimo ottenuto 35/100; Le formule che ho utilizzato sono le classiche formule della distanza tra due punti, Questo è il codice:

#include <bits/stdc++.h>

using namespace std;

int main(){
#ifdef EVAL
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
#endif
int T,Xa,Ya,Xb,Yb,Xc,Yc;
cin>>T;
double R;
double prim,sec,ter;
double sec1,ter1;
for(int i=0;i<T;i++){
	cin>>Xa>>Ya>>Xb>>Yb>>Xc>>Yc>>R;
	
	prim = sqrt((Xa-Xb)*(Xa-Xb)+(Ya-Yb)*(Ya-Yb));
	
	sec1 = sqrt((Xa-Xc)*(Xa-Xc)+(Ya-Yc)*(Ya-Yc));
	sec = max(0.0, sec1-R);
	
	ter1 = sqrt((Xb-Xc)*(Xb-Xc)+(Yb-Yc)*(Yb-Yc));
	ter = max(0.0, ter1-R);
	
	double tot = min(prim, sec+ter);
	tot=floor(tot*1000000)/1000000;
		printf("%.6f\n", tot);
	
}


}

Questo messaggio è stato segnalato dalla comunità ed è stato temporaneamente nascosto.

Puoi vedere:

Secret Meeting(teleport2) 10/100 , con algoritmo presupposto corretto

Credo che il problema stia nei quadrati calcolati dentro le radici quadrate (int*int non sta sempre in un int).
Convertite da int a double le coordinate dei 3 punti ha fatto 100/100.

grazie mille dell’aiuto, effettivamente cambiando le variabili delle coordinate da int a double da 100, ma sono abbastanza perplesso dato che ci avevo provato più di 2 o 3 volte a cambiare le coordinate da int a float o da int a double e mi dava 0/100… chissà cosa avrò scritto prima :slight_smile: :joy:

Per essere precisi nella prova che ho fatto ho usato i cast e ad esempio:

è diventato:

prim = sqrt((double)(Xa-Xb)(Xa-Xb)+(double)(Ya-Yb)(Ya-Yb));