結果
問題 | No.55 正方形を描くだけの簡単なお仕事です。 |
ユーザー |
![]() |
提出日時 | 2015-05-10 23:28:38 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 141 ms / 5,000 ms |
コード長 | 3,347 bytes |
コンパイル時間 | 2,349 ms |
コンパイル使用メモリ | 80,352 KB |
実行使用メモリ | 55,684 KB |
最終ジャッジ日時 | 2024-11-14 13:49:41 |
合計ジャッジ時間 | 6,148 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 21 |
ソースコード
import java.io.IOException;import java.util.InputMismatchException;public class Main {double EPS = 1e-12;class Point {int x, y;Point(int x, int y) {this.x = x;this.y = y;}}Point sub(Point a, Point b) {return new Point(a.x - b.x, a.y - b.y);}double dot(Point a, Point b) {return a.x * b.x + a.y * b.y;}int length(Point a, Point b) {return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);}boolean f(double k) {return Math.abs(k) < EPS;}boolean check(Point[] p) {for (int i = 0; i < 4; i++) {boolean f = false;int[] len = new int[3];int id = 0;for (int j = 0; j < 4; j++) {if (i == j) {continue;}len[id++] = length(p[i], p[j]);}if (len[0] == len[1] && len[0] * 2 == len[2]) {f = true;}if (len[0] == len[2] && len[0] * 2 == len[1]) {f = true;}if (len[1] == len[2] && len[1] * 2 == len[0]) {f = true;}if (!f) {return false;}}return true;}void run() {MyScanner sc = new MyScanner();Point[] p = new Point[4];for (int i = 0; i < 3; i++) {p[i] = new Point(sc.nextInt(), sc.nextInt());}for (int x = -300; x <= 300; x++) {for (int y = -300; y <= 300; y++) {p[3] = new Point(x, y);if (check(p)) {System.out.println(x + " " + y);return;}}}System.out.println(-1);}public static void main(String[] args) {new Main().run();}public void mapDebug(int[][] a) {System.out.println("--------map display---------");for (int i = 0; i < a.length; i++) {for (int j = 0; j < a[i].length; j++) {System.out.printf("%3d ", a[i][j]);}System.out.println();}System.out.println("----------------------------" + '\n');}class MyScanner {int read() {try {return System.in.read();} catch (IOException e) {throw new InputMismatchException();}}boolean isSpaceChar(int c) {return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;}boolean isEndline(int c) {return c == '\n' || c == '\r' || c == -1;}int nextInt() {return Integer.parseInt(next());}int[] nextIntArray(int n) {int[] array = new int[n];for (int i = 0; i < n; i++)array[i] = nextInt();return array;}long nextLong() {return Long.parseLong(next());}long[] nextLongArray(int n) {long[] array = new long[n];for (int i = 0; i < n; i++)array[i] = nextLong();return array;}double nextDouble() {return Double.parseDouble(next());}double[] nextDoubleArray(int n) {double[] array = new double[n];for (int i = 0; i < n; i++)array[i] = nextDouble();return array;}String next() {int c = read();while (isSpaceChar(c))c = read();StringBuilder res = new StringBuilder();do {res.appendCodePoint(c);c = read();} while (!isSpaceChar(c));return res.toString();}String[] nextStringArray(int n) {String[] array = new String[n];for (int i = 0; i < n; i++)array[i] = next();return array;}String nextLine() {int c = read();while (isEndline(c))c = read();StringBuilder res = new StringBuilder();do {res.appendCodePoint(c);c = read();} while (!isEndline(c));return res.toString();}}}