페이지

1448번: 삼각형 만들기

https://www.acmicpc.net/problem/1448


$O(n\lg n)$

정렬하고 인접한 세 변의 길이가 삼각형을 만들 수 있는 경우 중 최대 합을 구한다.


#include<cstdio>
#include<algorithm>
using namespace std;
int i, a[1000000], n;
int main() {
    scanf("%d", &n);
    for (i = 0; i < n; i++) scanf("%d", a + i);
    sort(a, a + n);
    for (i = n - 1; i > 1; i--) if (a[i] < a[i - 1] + a[i - 2]) {
        printf("%d", a[i] + a[i - 1] + a[i - 2]);
        return 0;
    }
    puts("-1");
    return 0;
}

댓글 없음 :

댓글 쓰기