fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int main() {
  5. int err, n, Tx, Ty;
  6. scanf("%d", &err);
  7. scanf("%d", &n);
  8. scanf("%d %d", &Tx, &Ty);
  9.  
  10. int minHeadIndex = -1, minTorsoIndex1 = -1, minTorsoIndex2 = -1;
  11. double minHeadDist = 2000.0, minTorsoDist1 = 2000.0, minTorsoDist2 = 2000.0;
  12.  
  13. for (int i = 0; i < n; ++i) {
  14. int xi, yi;
  15. scanf("%d %d", &xi, &yi);
  16.  
  17. double dist = sqrt((xi - Tx) * (xi - Tx) + (yi - Ty) * (yi - Ty));
  18.  
  19. if (dist < err / 1000.0) {
  20. double headWidth = 15.0 / dist;
  21. double torsoWidth = 35.0 / dist;
  22.  
  23. if (headWidth <= 1.0 && dist < minHeadDist) {
  24. minHeadDist = dist;
  25. minHeadIndex = i;
  26. } else if (torsoWidth <= 1.0) {
  27. if (dist < minTorsoDist1) {
  28. minTorsoDist2 = minTorsoDist1;
  29. minTorsoIndex2 = minTorsoIndex1;
  30.  
  31. minTorsoDist1 = dist;
  32. minTorsoIndex1 = i;
  33. } else if (dist < minTorsoDist2) {
  34. minTorsoDist2 = dist;
  35. minTorsoIndex2 = i;
  36. }
  37. }
  38. }
  39. }
  40.  
  41. if (minHeadIndex != -1) {
  42. printf("%d\n", minHeadIndex);
  43. } else if (minTorsoIndex1 != -1 && minTorsoIndex2 != -1) {
  44. printf("%d %d\n", minTorsoIndex1, minTorsoIndex2);
  45. } else {
  46. printf("abort\n");
  47. }
  48.  
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0.01s 5444KB
stdin
20
3
0 0
-500 1500
1000 200
3000 1000
stdout
abort