Maximum Perimeter Triangle

  • + 0 comments
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.util.Arrays;
    import java.util.stream.Stream;
    
    import static java.util.stream.Collectors.joining;
    
    public class MaximumPerimeterTriangle {
    
        public static void main(String[] args) {
            try (var br = new BufferedReader(new InputStreamReader(System.in));
                 var bw = new BufferedWriter(new OutputStreamWriter(System.out))) {
                int n = Integer.parseInt(br.readLine().trim());
                int [] sticks = Stream.of(br.readLine().trim().split(" "))
                        .mapToInt(Integer::parseInt).sorted().toArray();
                int[] result = maximumPerimeterTriangle(n, sticks);
                bw.write(Arrays.stream(result).mapToObj(String::valueOf).collect(joining(" ")));
                bw.newLine();
                bw.flush();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        private static int[] maximumPerimeterTriangle(int n, int[] sticks) {
            for (int i = n - 1; i >= 2; i--) {
                if (sticks[i] < sticks[i - 1] + sticks[i - 2]) {
                    return new int[]{sticks[i - 2], sticks[i - 1], sticks[i]};
                }
            }
            return new int[]{-1};
        }
    }