#include #include #include struct kde { int x, y; } *pole; double stred_x, stred_y, z; int n, e, h; int compare(const void *a1, const void *a2) { if (((kde*)(a1))->y < ((kde*)(a2))->y) return -1; if (((kde*)(a1))->y > ((kde*)(a2))->y) return 1; // if (((kde*)(a1))->y < stred_y) // { if (((kde*)(a1))->x < ((kde*)(a2))->x) return -1; if (((kde*)(a1))->x > ((kde*)(a2))->x) return 1; /* } if (((kde*)(a1))->y > stred_y) { if (((kde*)(a1))->x > ((kde*)(a2))->x) return -1; if (((kde*)(a1))->x < ((kde*)(a2))->x) return 1; } if (((kde*)(a1))->y == stred_y) { if (((kde*)(a1))->x > ((kde*)(a2))->x) return -1; if (((kde*)(a1))->x < ((kde*)(a2))->x) return 1; }*/ return 0; } int main() { int ide; scanf("%d", &n); while (n) { ide = 1; pole = new kde[n]; stred_x = stred_y = 0; for (int j = 0; j < n; j++) { scanf("%d%d", &pole[j].x, &pole[j].y); stred_x += pole[j].x; stred_y += pole[j].y; } stred_x /= n; stred_y /= n; printf("%f %f\n", stred_x, stred_y); qsort(pole, n, sizeof(kde), compare); int i; ide = 1; for (i = 0; i < n; i++) printf("%d %d\n", pole[i].x, pole[i].y); for (i = 0; i < (n / 2) -1; i++) if (!((pole[i].x + pole[n - i -1].x == stred_x * 2) && (pole[i].y + pole[n - i -1].y == stred_y * 2))) { ide = 0; break; } if ((n % 2) && (pole[n / 2].x != stred_x) && (pole[n / 2].y != stred_y)) ide = 0; if (ide) { stred_x = stred_x * 10; z = modf(stred_x, &stred_x); z *= 10; if (z >= 5) stred_x += 1; stred_x /= 10; stred_y = stred_y * 10; modf(stred_y, &stred_y); z *= 10; stred_y /= 10; if (z >= 5) stred_y += 1; if ((stred_x < 0) && (stred_x > -0.05)) stred_x *= -1; if ((stred_y < 0) && (stred_y > -0.05)) stred_y *= -1; if (ide) printf("V.I.P. should stay at (%.1f,%.1f).\n", stred_x, stred_y); } else printf("This is a dangerous situation!\n"); delete [] pole; scanf("%d", &n); } return 0; }