Guest User

ois_annoluce

a guest
Sep 11th, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <assert.h>
  3. #include <math.h>
  4. #include <algorithm>
  5.  
  6. #define MAXN 100000
  7. long long X[MAXN], Y[MAXN], Z[MAXN], N;
  8. double distances[MAXN];
  9.  
  10. void mappatura(int N, long long X[], long long Y[], long long Z[]) {
  11.     for (int i = 0; i < N; i++) {
  12.         distances[i] = sqrt(X[i]*X[i] + Y[i]*Y[i] + Z[i]*Z[i]);
  13.         // printf("X[%d] = %lld\n", i, X[i]*X[i]);
  14.         // printf("Distanza %d, %d, %d: %f\n", X[i], Y[i], Z[i], distances[i]);
  15.     }
  16.     std::sort(distances, distances+N);
  17. }
  18.  
  19. long long query(int D) {
  20.     long long i = 0;
  21.     while (distances[i] <= D && i < N) {
  22.         i++;
  23.     }
  24.     //printf("Risultato query %d: %d\n", D, i);
  25.     return i;
  26. }
  27.  
  28.  
  29. int main() {
  30.     FILE *fr, *fw;
  31.     int Q, i;
  32.  
  33.     for (int i = 0; i < MAXN; i++) {
  34.         X[i] = Y[i] = Z[i] = distances[i] = 0;
  35.     }
  36.  
  37.     fr = fopen("input.txt", "r");
  38.     fw = fopen("output.txt", "w");
  39.     assert(1 == fscanf(fr, "%d", &N));
  40.     for(i=0; i<N; i++)
  41.         assert(3 == fscanf(fr, "%d%d%d", &X[i], &Y[i], &Z[i]));
  42.  
  43.     mappatura(N, X, Y, Z);
  44.  
  45.     assert(1 == fscanf(fr, "%d", &Q));
  46.     for(i=0; i<Q; i++) {
  47.         int D;
  48.         assert(1 == fscanf(fr, "%d", &D));
  49.         fprintf(fw, "%d\n", query(D));
  50.     }
  51.  
  52.     fclose(fr);
  53.     fclose(fw);
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment