結果
問題 | No.55 正方形を描くだけの簡単なお仕事です。 |
ユーザー |
![]() |
提出日時 | 2015-06-23 21:37:00 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 161 ms / 5,000 ms |
コード長 | 2,939 bytes |
コンパイル時間 | 2,791 ms |
コンパイル使用メモリ | 93,352 KB |
実行使用メモリ | 55,092 KB |
最終ジャッジ日時 | 2024-11-14 13:50:21 |
合計ジャッジ時間 | 7,186 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 21 |
ソースコード
import java.util.*;import java.io.*;import java.awt.geom.*;import static java.util.Arrays.*;class Main{public static void main(String[] args){Scanner stdIn = new Scanner(System.in);PrintWriter out = new PrintWriter(System.out);int[] x = new int[4];int[] y = new int[4];double[] length = new double[4];double l = 0;int n = 0;boolean flag = false;for(int i=0;i<3;i++){x[i] = Integer.parseInt(stdIn.next());y[i] = Integer.parseInt(stdIn.next());}for(int i=0;i<3;i++){length[i] = Math.sqrt(Math.pow(x[i] - x[(i+1)%3],2)+Math.pow(y[i]-y[(i+1)%3],2));}for(int i=0;i<3;i++){if(length[i]==length[(i+1)%3]){n = (i+1)%3;flag = true;}}Vector v1 = new Vector(x[n],y[n],x[(n+1)%3],y[(n+1)%3]);Vector v2 = new Vector(x[n],y[n],x[(n+2)%3],y[(n+2)%3]);if(flag && v1.dot(v2)==0){v1.add(v2);out.println((int)(x[n]+v1.x)+" "+(int)(y[n]+v1.y));out.flush();return;}out.println(-1);out.flush();}}class Vector{public final double EPS = Math.pow(10,-8);public double x,y;Vector( double x1 , double y1 , double x2 , double y2 ){this.x = x2 - x1;this.y = y2 - y1;}double dot( Vector a ){return this.x * a.x + this.y * a.y;}double cross( Vector a ){return this.x * a.y - this.y * a.x;}void add( Vector a ){this.x += a.x;this.y += a.y;}void sub( Vector a ){this.x -= a.x;this.y -= a.y;}void mul( double z ){this.x *= z;this.y *= z;}void div( double z ){this.x /= z;this.y /= z;}double abs(){return Math.sqrt(norm());}double norm(){return this.x * this.x + this.y * this.y;}double cos(Vector a){Vector b = new Vector(0,0,this.x,this.y);Vector c = new Vector(a.x,a.y,b.x,b.y);if(judge(a.dot(b))){return 0.0;}double cos = (Math.pow(a.abs(),2)+Math.pow(b.abs(),2)-Math.pow(c.abs(),2))/(2*a.abs()*b.abs());return cos;}double sin(Vector a){Vector b = new Vector(0,0,this.x,this.y);if(judge(a.cross(b))){return 0.0;}double height = a.cross(b)/a.abs();double sin = b.abs()/height;return sin;}double cosLength( double a , double b , double c ){double cos = (Math.pow(a,2) + Math.pow(b,2) - Math.pow(c,2))/(2 * a * b);if(judge(cos)){return 0.0;}return cos;}double sinLength( double a , double b , double c ){double cos = cosLength(a,b,c);if(judge(1-cos)){return 0.0;}return Math.sqrt(1-Math.pow(cos,2));}void projection( Vector a ){double cos = dot(a)/(abs() * a.abs());double frac = a.abs() * cos/abs();mul(frac);}Vector reflection( Vector a ){projection(a);return new Vector(a.x,a.y,this.x,this.y);}boolean judgeisOrthogonal( Vector a ){return judge(dot(a)) ? true : false;}boolean judgeisParallel( Vector a ){return judge(cross(a)) ? true : false;}boolean judge( double a ){return Math.abs(a)<EPS ? true : false;}}