Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <assert.h>
- #include <math.h>
- #include <algorithm>
- #define MAXN 100000
- long long X[MAXN], Y[MAXN], Z[MAXN], N;
- double distances[MAXN];
- void mappatura(int N, long long X[], long long Y[], long long Z[]) {
- for (int i = 0; i < N; i++) {
- distances[i] = sqrt(X[i]*X[i] + Y[i]*Y[i] + Z[i]*Z[i]);
- // printf("X[%d] = %lld\n", i, X[i]*X[i]);
- // printf("Distanza %d, %d, %d: %f\n", X[i], Y[i], Z[i], distances[i]);
- }
- std::sort(distances, distances+N);
- }
- long long query(int D) {
- long long i = 0;
- while (distances[i] <= D && i < N) {
- i++;
- }
- //printf("Risultato query %d: %d\n", D, i);
- return i;
- }
- int main() {
- FILE *fr, *fw;
- int Q, i;
- for (int i = 0; i < MAXN; i++) {
- X[i] = Y[i] = Z[i] = distances[i] = 0;
- }
- fr = fopen("input.txt", "r");
- fw = fopen("output.txt", "w");
- assert(1 == fscanf(fr, "%d", &N));
- for(i=0; i<N; i++)
- assert(3 == fscanf(fr, "%d%d%d", &X[i], &Y[i], &Z[i]));
- mappatura(N, X, Y, Z);
- assert(1 == fscanf(fr, "%d", &Q));
- for(i=0; i<Q; i++) {
- int D;
- assert(1 == fscanf(fr, "%d", &D));
- fprintf(fw, "%d\n", query(D));
- }
- fclose(fr);
- fclose(fw);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment