結果
問題 | No.471 直列回転機 |
ユーザー | uwi |
提出日時 | 2019-03-01 19:24:00 |
言語 | Java21 (openjdk 21) |
結果 |
AC
|
実行時間 | 2,411 ms / 3,141 ms |
コード長 | 2,181 bytes |
コンパイル時間 | 5,030 ms |
コンパイル使用メモリ | 81,868 KB |
実行使用メモリ | 75,100 KB |
平均クエリ数 | 19595.39 |
最終ジャッジ日時 | 2024-06-11 10:43:14 |
合計ジャッジ時間 | 64,465 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 166 ms
59,672 KB |
testcase_01 | AC | 159 ms
59,356 KB |
testcase_02 | AC | 167 ms
59,768 KB |
testcase_03 | AC | 178 ms
59,480 KB |
testcase_04 | AC | 176 ms
59,596 KB |
testcase_05 | AC | 247 ms
61,232 KB |
testcase_06 | AC | 190 ms
59,796 KB |
testcase_07 | AC | 229 ms
60,524 KB |
testcase_08 | AC | 547 ms
65,200 KB |
testcase_09 | AC | 554 ms
65,076 KB |
testcase_10 | AC | 433 ms
64,396 KB |
testcase_11 | AC | 1,058 ms
67,068 KB |
testcase_12 | AC | 1,667 ms
74,208 KB |
testcase_13 | AC | 1,621 ms
74,268 KB |
testcase_14 | AC | 1,710 ms
73,836 KB |
testcase_15 | AC | 1,920 ms
74,552 KB |
testcase_16 | AC | 217 ms
60,672 KB |
testcase_17 | AC | 159 ms
59,328 KB |
testcase_18 | AC | 155 ms
59,484 KB |
testcase_19 | AC | 161 ms
59,632 KB |
testcase_20 | AC | 1,650 ms
74,516 KB |
testcase_21 | AC | 599 ms
64,716 KB |
testcase_22 | AC | 1,713 ms
73,996 KB |
testcase_23 | AC | 1,536 ms
74,256 KB |
testcase_24 | AC | 1,225 ms
72,952 KB |
testcase_25 | AC | 568 ms
65,356 KB |
testcase_26 | AC | 1,763 ms
74,104 KB |
testcase_27 | AC | 1,194 ms
73,644 KB |
testcase_28 | AC | 1,472 ms
73,040 KB |
testcase_29 | AC | 1,405 ms
73,396 KB |
testcase_30 | AC | 729 ms
66,228 KB |
testcase_31 | AC | 2,411 ms
73,760 KB |
testcase_32 | AC | 1,661 ms
74,040 KB |
testcase_33 | AC | 1,487 ms
73,248 KB |
testcase_34 | AC | 1,799 ms
75,100 KB |
testcase_35 | AC | 638 ms
65,704 KB |
testcase_36 | AC | 1,018 ms
66,940 KB |
testcase_37 | AC | 501 ms
65,776 KB |
testcase_38 | AC | 649 ms
65,080 KB |
testcase_39 | AC | 814 ms
66,752 KB |
testcase_40 | AC | 1,688 ms
73,920 KB |
testcase_41 | AC | 1,866 ms
74,312 KB |
testcase_42 | AC | 1,459 ms
73,372 KB |
testcase_43 | AC | 1,751 ms
73,880 KB |
testcase_44 | AC | 389 ms
63,444 KB |
testcase_45 | AC | 1,422 ms
73,772 KB |
testcase_46 | AC | 1,707 ms
73,704 KB |
testcase_47 | AC | 1,651 ms
73,908 KB |
testcase_48 | AC | 1,621 ms
73,420 KB |
testcase_49 | AC | 1,709 ms
74,012 KB |
testcase_50 | AC | 1,766 ms
74,100 KB |
testcase_51 | AC | 979 ms
70,912 KB |
testcase_52 | AC | 234 ms
60,744 KB |
testcase_53 | AC | 233 ms
60,740 KB |
testcase_54 | AC | 272 ms
60,816 KB |
testcase_55 | AC | 729 ms
65,976 KB |
testcase_56 | AC | 585 ms
65,088 KB |
testcase_57 | AC | 489 ms
65,396 KB |
testcase_58 | AC | 431 ms
64,000 KB |
ソースコード
package adv2016; import java.io.PrintWriter; import java.util.Arrays; import java.util.Scanner; public class N471_2 { static Scanner in; static PrintWriter out; static String INPUT = ""; // (0 1)(x-a) +(a) // (-1 0)(y-b) (b) static long[][][] ret = new long[3][3][]; static void solve() { int m = ni(); int[][] co = new int[m][]; for(int i = 0;i < m;i++) { co[i] = new int[] {ni(), ni()}; } for(int i = 0;i < 3;i++) { for(int j = 0;j < 3;j++) { out.println("? " + i + " " + j); out.flush(); long x = nl(), y = nl(); ret[i][j] = new long[] {x, y}; } } int[][] M = { {0, 1}, {-1, 0} }; int[][] A = { {1, 0}, {0, 1} }; outer: for(int k = 0;k < 4;k++) { A = mul(A, M); // A[0][0]*x + A[0][1]*y + s = X // A[1][0]*x + A[1][1]*y + t = Y long S = ret[0][0][0], T = ret[0][0][1]; for(int i = 0;i < 3;i++) { for(int j = 0;j < 3;j++) { if(A[0][0] * i + A[0][1] * j + S != ret[i][j][0])continue outer; if(A[1][0] * i + A[1][1] * j + T != ret[i][j][1])continue outer; } } out.println("!"); for(int[] v : co) { out.println( (A[0][0] * v[0] + A[0][1] * v[1] + S) + " " + (A[1][0] * v[0] + A[1][1] * v[1] + T) ); out.flush(); } return; } // (1,0) -> (0,-1) // (0 1 x) // (-1 0 y) // (0 0 1) } public static int[][] mul(int[][] A, int[][] B) { assert A[0].length == B.length; int m = A.length; int n = A[0].length; int o = B[0].length; int[][] C = new int[m][o]; for(int i = 0;i < m;i++){ for(int k = 0;k < n;k++){ for(int j = 0;j < o;j++){ C[i][j] += A[i][k] * B[k][j]; } } } return C; } public static void main(String[] args) throws Exception { in = INPUT.isEmpty() ? new Scanner(System.in) : new Scanner(INPUT); out = new PrintWriter(System.out); solve(); out.flush(); } static int ni() { return Integer.parseInt(in.next()); } static long nl() { return Long.parseLong(in.next()); } static double nd() { return Double.parseDouble(in.next()); } static void tr(Object... o) { if(INPUT.length() != 0)System.out.println(Arrays.deepToString(o)); } }