#include<cstdio> #include<algorithm> using namespace std; int n, res; double x[100], y[100]; int main() { while (scanf("%d", &n) && n) { for (int i = 0; i < n; i++) scanf("%lf %lf", x + i, y + i); res = n > 1 ? 2 : 1; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { if (x[i] == x[j] && x[i] == x[k] || y[i] == y[j] && y[i] == y[k]) continue; double p = ((x[i] * x[i] + y[i] * y[i])*(y[j] - y[k]) + (x[j] * x[j] + y[j] * y[j])*(y[k] - y[i]) + (x[k] * x[k] + y[k] * y[k])*(y[i] - y[j])) / ((x[k] - x[j])*y[i] + (x[i] - x[k])*y[j] + (x[j] - x[i])*y[k]) / 2, q = ((x[i] * x[i] + y[i] * y[i])*(x[j] - x[k]) + (x[j] * x[j] + y[j] * y[j])*(x[k] - x[i]) + (x[k] * x[k] + y[k] * y[k])*(x[i] - x[j])) / ((y[k] - y[j])*x[i] + (y[i] - y[k])*x[j] + (y[j] - y[i])*x[k]) / 2, r = (x[i] - p)*(x[i] - p) + (y[i] - q)*(y[i] - q); int cnt = 0; for (int l = 0; l < n; l++) cnt += abs((x[l] - p)*(x[l] - p) + (y[l] - q)*(y[l] - q) - r) < 1e-6; res = max(res, cnt); } } } printf("%d\n", res); } return 0; }
5695번: 공원점
https://www.acmicpc.net/problem/5695
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기