fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. typedef struct {
  5. int x, y;
  6. } Point;
  7.  
  8. int main() {
  9. int err, n, Tx, Ty;
  10. scanf("%d", &err);
  11. scanf("%d", &n);
  12. scanf("%d %d", &Tx, &Ty);
  13.  
  14. Point sites[n];
  15. for (int i = 0; i < n; ++i) {
  16. scanf("%d %d", &sites[i].x, &sites[i].y);
  17. }
  18.  
  19. int closest_head_site = -1;
  20. double min_distance_head = 2000.0;
  21. int closest_torso_sites[2] = {-1, -1};
  22. double min_distance_torso = 2000.0;
  23.  
  24. for (int i = 0; i < n; ++i) {
  25. double distance = sqrt(pow(sites[i].x - Tx, 2) + pow(sites[i].y - Ty, 2)) / 100.0;
  26. if (distance * err <= 15.0) {
  27. if (distance < min_distance_head) {
  28. closest_head_site = i;
  29. min_distance_head = distance;
  30. }
  31. } else if (distance * err <= 35.0) {
  32. for (int j = i + 1; j < n; ++j) {
  33. double distance2 = sqrt(pow(sites[j].x - Tx, 2) + pow(sites[j].y - Ty, 2)) / 100.0;
  34. if (distance2 * err <= 35.0) {
  35. double torso_distance = fmax(distance, distance2);
  36. if (torso_distance < min_distance_torso) {
  37. closest_torso_sites[0] = i;
  38. closest_torso_sites[1] = j;
  39. min_distance_torso = torso_distance;
  40. }
  41. }
  42. }
  43. }
  44. }
  45.  
  46. if (closest_head_site != -1) {
  47. printf("%d\n", closest_head_site);
  48. } else if (closest_torso_sites[0] != -1) {
  49. printf("%d %d\n", closest_torso_sites[0], closest_torso_sites[1]);
  50. } else {
  51. printf("abort\n");
  52. }
  53.  
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0s 5516KB
stdin
20
3
0 0
-500 1500
1000 200
3000 1000
stdout
abort