import java.io.* ; public class area { static long det(int[][] m) { return m[0][0] * (m[1][1] * (long)m[2][2] - m[1][2] * (long)m[2][1]) + m[0][1] * (m[1][2] * (long)m[2][0] - m[1][0] * (long)m[2][2]) + m[0][2] * (m[1][0] * (long)m[2][1] - m[1][1] * (long)m[2][0]) ; } static int[] sub(int[] a, int[] b) { int[] r = new int[a.length] ; for (int i=0; i 0) pos++ ; else zero++ ; } if (neg == 0 || pos == 0) { // face if (zero != 3) throw new Exception("Points on face is " + zero) ; r += triarea(dist(mat[0]), dist(mat[1]), dist(sub(pts[b], pts[c]))) ; } } System.out.println((long)Math.floor(r+0.5)) ; } } }