結果
問題 | No.199 星を描こう |
ユーザー | ぴろず |
提出日時 | 2015-04-28 23:34:37 |
言語 | Java21 (openjdk 21) |
結果 |
AC
|
実行時間 | 141 ms / 2,000 ms |
コード長 | 1,770 bytes |
コンパイル時間 | 2,666 ms |
コンパイル使用メモリ | 80,768 KB |
実行使用メモリ | 41,696 KB |
最終ジャッジ日時 | 2024-06-09 13:36:16 |
合計ジャッジ時間 | 7,522 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 141 ms
41,344 KB |
testcase_01 | AC | 136 ms
41,368 KB |
testcase_02 | AC | 140 ms
41,280 KB |
testcase_03 | AC | 135 ms
41,244 KB |
testcase_04 | AC | 135 ms
41,240 KB |
testcase_05 | AC | 134 ms
41,576 KB |
testcase_06 | AC | 132 ms
41,020 KB |
testcase_07 | AC | 134 ms
41,092 KB |
testcase_08 | AC | 135 ms
41,096 KB |
testcase_09 | AC | 135 ms
41,224 KB |
testcase_10 | AC | 134 ms
41,164 KB |
testcase_11 | AC | 137 ms
41,320 KB |
testcase_12 | AC | 138 ms
41,368 KB |
testcase_13 | AC | 135 ms
41,364 KB |
testcase_14 | AC | 135 ms
41,188 KB |
testcase_15 | AC | 124 ms
39,888 KB |
testcase_16 | AC | 133 ms
41,392 KB |
testcase_17 | AC | 135 ms
41,380 KB |
testcase_18 | AC | 137 ms
41,400 KB |
testcase_19 | AC | 135 ms
41,696 KB |
testcase_20 | AC | 136 ms
41,412 KB |
testcase_21 | AC | 136 ms
41,268 KB |
testcase_22 | AC | 134 ms
41,468 KB |
testcase_23 | AC | 133 ms
40,924 KB |
testcase_24 | AC | 136 ms
41,212 KB |
testcase_25 | AC | 137 ms
41,488 KB |
testcase_26 | AC | 136 ms
41,208 KB |
testcase_27 | AC | 136 ms
41,432 KB |
ソースコード
package no199; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Vector2[] v = new Vector2[5]; for(int i=0;i<5;i++) { v[i] = new Vector2(sc.nextInt(),sc.nextInt()); } System.out.println(Vector2.convexHull(v).length == 5 ? "YES" : "NO"); } } class Vector2 { int x = 0; int y = 0; public Vector2(int x,int y) { this.x = x; this.y = y; } public int dot(Vector2 v) { return this.x*v.x+this.y*v.y; } public int cross(Vector2 v) { return this.x*v.y-this.y*v.x; } public Vector2 add(Vector2 v) { return new Vector2(this.x+v.x,this.y+v.y); } public Vector2 subtract(Vector2 v) { return new Vector2(this.x-v.x,this.y-v.y); } public Vector2 multiply(int k) { return new Vector2(k*this.x,k*this.y); } public long normSquare() { return x * x + y * y; } public long distSquare(Vector2 v) { return this.subtract(v).normSquare(); } public static Vector2[] convexHull(Vector2[] p) { int n = p.length; int k = 0; Arrays.sort(p,new LexicographicalComp()); Vector2[] q = new Vector2[n*2]; for(int i=0;i<n;q[k++]=p[i++]) { while(k >= 2 && q[k-2].subtract(q[k-1]).cross(q[k-1].subtract(p[i])) <= 0) { k--; } } for(int i=n-2, t=k+1;i>=0;q[k++]=p[i--]) { while(k >= t && q[k-2].subtract(q[k-1]).cross(q[k-1].subtract(p[i])) <= 0) { k--; } } return Arrays.copyOf(q, k-1); } public String toString() { return this.x + " " + this.y; } public static class LexicographicalComp implements Comparator<Vector2>{ public int compare(Vector2 o1, Vector2 o2) { if (o1.x != o2.x) { return Integer.compare(o1.x, o2.x); } return Integer.compare(o1.y, o2.y); } } }