점들이 주어질 때 해당 점들로 만들 수 있는 가장 큰 삼각형을 구하면 된다.


세 점의 좌표로 삼각형의 넓이를 구하는 방법은 구글링하면 바로 나온다.


오차를 언급하는데 좌표가 자연수이고 삼각형의 넓이는 어차피 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 % 2printf("%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

+ Recent posts