점들이 주어질 때 해당 점들로 만들 수 있는 가장 큰 삼각형을 구하면 된다.
세 점의 좌표로 삼각형의 넓이를 구하는 방법은 구글링하면 바로 나온다.
오차를 언급하는데 좌표가 자연수이고 삼각형의 넓이는 어차피 2로 나누므로 소수점은 0.5 혹은 없다.
따라서 2로 나누기 전의 값을 max값으로 저장해 놓고 %2==1이면 .5출력, 아니면 그냥 출력하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> #include <algorithm> using namespace std; int x[35], y[35], n, i, j, k, ans; int main() { scanf("%d", &n); for (; i < n; i++) scanf("%d%d", &x[i], &y[i]); for (i = 0; i < n; i++) for (j = i + 1; j < n; j++) for (k = j + 1; k < n; k++) ans = max(ans, abs(x[i] * y[j] + x[j] * y[k] + x[k] * y[i] - x[j] * y[i] - x[k] * y[j] - x[i] * y[k])); if(ans % 2) printf("%d.5", ans / 2); else printf("%d", ans / 2); return 0; } | cs |
'BOJ' 카테고리의 다른 글
14943 벼룩시장 (0) | 2017.12.12 |
---|---|
2931 가스관 (0) | 2017.12.01 |
2149 암호 해독 (0) | 2017.10.30 |
12835 삼거리 (0) | 2017.10.30 |
3159 전구 (0) | 2017.10.30 |