Annoluce output non corretto 40/100


#1

Alcuni test di alcuni subtask me li da incorretti, mentre la subtask 7 è completamente incorretta, quale è il problema?

Codice

#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>

#define max 100000
using namespace std;

ifstream in("input.txt");
ofstream out("output.txt");

int x[max], y[max], z[max];

float distanze[max];


int main(){
	int n, q;
	
	in >> n;
	
	for(int i = 0; i < n; i ++){
	in >> x[i] >> y[i] >> z[i];
		
	distanze[i] = (float) sqrt ((x[i] * x[i]) + (y[i] * y[i]) + (z[i] * z[i]));
	}
	
	sort(distanze, distanze+n);
	
	in >> q;
	
	int j, d;
	
	for(int i = 0; i < q; i ++){
		
		j = 0;
		in >> d;
		
		while(distanze[j] <= d && j < n) j ++;
		
		out << j << "\n";
	}
}

#2

Si tratta di output sbagliato oppure il tuo codice è troppo lento?

Una miglioria che puoi/devi fare è implementare la Binary Search per capire quanti valori minori di d ci sono.


#3

si tratta di output sbagliato


#4

Assicurati di utilizzare i long long invece degli int, quando fai x[i]×x[i] il valore può arrivare a 2^(60), mentre il valore massimo degli int è 2 ^ (31)