Problema Anno luce

#include <iostream>
#include <math.h>
#include <fstream>
#include <time.h>
#include <algorithm>
#include <vector>
#include <stdlib.h>
using namespace std;
long long int distanza[100000];
int pianeti;
void mappatura(int N, int x[], int y[], int z[])
{pianeti=N;
for (int i=0; i<pianeti; i++)
distanza[i]=(long long int)x[i]*x[i] +(long long int)y[i]*y[i]+
(long long int)z[i]*z[i]; 
sort(distanza, distanza+pianeti);}
int query(int D)
{ return upper_bound(distanza, distanza+pianeti,(long long int) D*D)- distanza;
	
} 	
int main ()
{    
	freopen("input.txt","r",stdin);
	freopen("output.txt", "w",stdout);
	int N;cin>>N; 
	int X[N],Y[N],Z[N];
	for (int i=0;i<N;i++)
	{cin>>X[i]>>Y[i]>>Z[i];
	}
	mappatura (N,X,Y,Z); //numero di stelle
	int Q; cin>>Q;int d[Q];
	for (int i=0;i<Q;i++)
	{cin>>d[i]; cout <<query(d[i])<<"\n";
	}
		return 0;
}

Perchè ho 40/100

Penso che il problema sia quando fai:

(long long int) qualcosa * qualcosa

dove qualcosa è una variabile int. Infatti, penso che venga fatta prima la moltiplicazione (che in alcuni casi va in overflow) e successivamente la conversione da int a long long.

in effetti ora ho 60/100