結果
問題 | No.3064 う し た ぷ に き あ く ん 笑 |
ユーザー | uwi |
提出日時 | 2020-04-02 16:50:51 |
言語 | Java21 (openjdk 21) |
結果 |
AC
|
実行時間 | 262 ms / 2,000 ms |
コード長 | 17,810 bytes |
コンパイル時間 | 5,979 ms |
コンパイル使用メモリ | 91,024 KB |
実行使用メモリ | 46,836 KB |
最終ジャッジ日時 | 2024-06-28 15:07:45 |
合計ジャッジ時間 | 13,530 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 130 ms
41,404 KB |
testcase_01 | AC | 127 ms
41,400 KB |
testcase_02 | AC | 129 ms
41,236 KB |
testcase_03 | AC | 130 ms
41,220 KB |
testcase_04 | AC | 113 ms
40,104 KB |
testcase_05 | AC | 129 ms
41,484 KB |
testcase_06 | AC | 117 ms
40,096 KB |
testcase_07 | AC | 128 ms
41,264 KB |
testcase_08 | AC | 129 ms
41,228 KB |
testcase_09 | AC | 129 ms
41,444 KB |
testcase_10 | AC | 130 ms
41,500 KB |
testcase_11 | AC | 122 ms
41,128 KB |
testcase_12 | AC | 130 ms
41,268 KB |
testcase_13 | AC | 130 ms
41,428 KB |
testcase_14 | AC | 129 ms
41,356 KB |
testcase_15 | AC | 127 ms
41,156 KB |
testcase_16 | AC | 132 ms
41,192 KB |
testcase_17 | AC | 131 ms
41,352 KB |
testcase_18 | AC | 129 ms
41,256 KB |
testcase_19 | AC | 128 ms
41,160 KB |
testcase_20 | AC | 115 ms
40,156 KB |
testcase_21 | AC | 131 ms
41,440 KB |
testcase_22 | AC | 128 ms
41,196 KB |
testcase_23 | AC | 130 ms
41,104 KB |
testcase_24 | AC | 129 ms
41,256 KB |
testcase_25 | AC | 127 ms
41,132 KB |
testcase_26 | AC | 196 ms
42,632 KB |
testcase_27 | AC | 155 ms
41,916 KB |
testcase_28 | AC | 262 ms
46,776 KB |
testcase_29 | AC | 247 ms
46,772 KB |
testcase_30 | AC | 260 ms
46,648 KB |
testcase_31 | AC | 240 ms
44,208 KB |
testcase_32 | AC | 249 ms
46,836 KB |
testcase_33 | AC | 160 ms
41,596 KB |
testcase_34 | AC | 252 ms
46,664 KB |
testcase_35 | AC | 224 ms
43,648 KB |
testcase_36 | AC | 239 ms
43,792 KB |
testcase_37 | AC | 261 ms
46,832 KB |
testcase_38 | AC | 247 ms
44,096 KB |
testcase_39 | AC | 159 ms
41,976 KB |
testcase_40 | AC | 188 ms
42,416 KB |
testcase_41 | AC | 234 ms
43,544 KB |
testcase_42 | AC | 136 ms
41,520 KB |
testcase_43 | AC | 165 ms
41,964 KB |
testcase_44 | AC | 249 ms
43,996 KB |
testcase_45 | AC | 195 ms
42,172 KB |
testcase_46 | AC | 127 ms
41,660 KB |
ソースコード
package contest200401; import java.io.PrintWriter; import java.util.Arrays; import java.util.Scanner; public class H3 { static Scanner in; static PrintWriter out; static String INPUT = ""; static void solve() { Analyzer a = new Analyzer(); a.add("う く く 笑 に き し ん し あ ", "input"); a.add("う 笑 し ん し あ に き し ん し あ ", "output"); a.add("た ん う し う き に き し ぷ く ん ", "sample"); a.add("う あ ", "b"); a.add("ん 笑 ", "c"); a.add("た ぷ ", "d"); a.add("ぷ に ", "f"); a.add("し き ", "g"); a.add("あ く ", "h"); a.add("あ 笑 ", "j"); a.add("う ん ", "k"); a.add("ぷ 笑 ", "q"); a.add("た き ", "r"); a.add("う う ", "v"); a.add("う た ", "w"); a.add("き 笑 ", "x"); a.add("に く ", "y"); a.add("笑 笑 ", "z"); a.validate(); String D = "に き た き う 笑 う あ し ぷ く ん う き た ん し あ う し し あ く ん う き く ん く 笑 し あ\n" + "う く く 笑 \"う し た ぷ に き あ 王 国 笑\"、 う し た ん に き く ん ん 笑 う く う し し ぷ う あ う し た ぷ う く し き う く し あ \n" + "く 笑 し ん う き う あ く ん た き た き く ん に き た き く ん た ん く ん く 笑 し あ う し し あ う く う 笑 く 笑 う く た ん \n" + "し ん た ん く ん た ぷ 。 し あ あ く う く た ん う あ う し た ぷ う く し き う く し あ く 笑 し ん う き う あ く ん た き \n" + "た き く ん に き た き く ん た ん く ん く 笑 し あ う し し あ う く う 笑 く 笑 う く た ん く ん き 笑 に き た き く ん た ん た ん く ん た ぷ \n" + "し ん た ん う く く 笑 し き \"う し た ぷ に き あ く ん 笑\"。 に く う 笑 し ん た き し あ う し た ん う ん う く た ん \n" + "し あ う 笑 た き く ん に き た き く ん た ん く ん く 笑 し あ し あ あ く く ん し き う く う う く ん く 笑 \n" + "た ん し あ た き う く く 笑 し き う 笑 ぷ に し ぷ う 笑 う た く ん た き ん 笑 う し た ん く ん く ん く 笑 し き し ぷ う く た ん あ く \n" + "し ぷ く ん し あ し あ く ん た き た ん う し た ん し あ あ く う く た ん う あ う し た ぷ う く し き う く し あ く 笑 し ん う き う あ く ん た き \n" + "た き く ん に き た き く ん た ん く ん く 笑 し あ う し し あ う く う 笑 く 笑。\n" + "\n" + "う く く 笑 に き し ん し あ\n" + "た\n" + " \n" + "ん\n" + "\n" + "う あ\n" + "≤\n" + "|\n" + "た ん\n" + "|\n" + "≤\n" + "ぷ に た き に く く ん\n" + "\n" + "た ん う く た ん う し う 笑 ぷ に し ぷ う 笑 う た く ん た き ん 笑 う し た ん く ん く ん く 笑 し き し ぷ う く た ん あ く \n" + "し ぷ く ん し あ し あ く ん た き た ん\n" + "\n" + "う 笑 し ん し あ に き し ん し あ\n" + "に き た き う く く 笑 し あ し あ あ く く ん う し く 笑 た ん う た く ん た き。\n" + "\n" + "た ん う し う き に き し ぷ く ん\n" + "た ん う し う き に き し ぷ く ん う し\n" + "う く く 笑 に き し ん し あ\n" + "う う ぷ に た ぷ し き 笑 笑 う き ぷ 笑 き 笑 く 笑 う き \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う う ぷ に た ぷ し き 笑 笑 う き ぷ 笑 き 笑 く 笑 う き \n" + "た ん う し う き に き し ぷ く ん う あ\n" + "う く く 笑 に き し ん し あ\n" + "た き う う \n" + "う 笑 し ん し あ に き し ん し あ\n" + "た き う う \n" + "た ん う し う き に き し ぷ く ん ん 笑\n" + "う く く 笑 に き し ん し あ\n" + "し ぷ う う う し う し に き う た \n" + "う 笑 し ん し あ に き し ん し あ\n" + "し ぷ う う う し う し に き う た \n" + "た ん う し う き に き し ぷ く ん た ぷ\n" + "う く く 笑 に き し ん し あ\n" + "き 笑 あ 笑 う た き 笑 し ぷ た き あ く し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "き 笑 あ 笑 う た き 笑 し ぷ た き あ く し ん \n" + "た ん う し う き に き し ぷ く ん く ん\n" + "う く く 笑 に き し ん し あ\n" + "た ん う き し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "た ん う き し ん \n" + "た ん う し う き に き し ぷ く ん ぷ に\n" + "う く く 笑 に き し ん し あ\n" + "た ん ぷ に ん 笑 う ん う ん あ く き 笑 あ く う き に き \n" + "う 笑 し ん し あ に き し ん し あ\n" + "た ん ぷ に ん 笑 う ん う ん あ く き 笑 あ く う き に き \n" + "た ん う し う き に き し ぷ く ん し き\n" + "う く く 笑 に き し ん し あ\n" + "し あ き 笑 \n" + "う 笑 し ん し あ に き し ん し あ\n" + "し あ き 笑 \n" + "た ん う し う き に き し ぷ く ん あ く\n" + "う く く 笑 に き し ん し あ\n" + "し き う た う し ぷ に う 笑 に く ぷ に く ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "し き う た う し ぷ に う 笑 に く ぷ に く ん \n" + "た ん う し う き に き し ぷ く ん う く\n" + "う く く 笑 に き し ん し あ\n" + "う あ ぷ 笑 う く に き\n" + "う 笑 し ん し あ に き し ん し あ\n" + "う あ ぷ 笑 う く に き\n" + "た ん う し う き に き し ぷ く ん あ 笑\n" + "う く く 笑 に き し ん し あ\n" + "ぷ 笑 た き た き \n" + "う 笑 し ん し あ に き し ん し あ\n" + "ぷ 笑 た き た き \n" + "た ん う し う き に き し ぷ く ん う ん\n" + "う く く 笑 に き し ん し あ\n" + "う き た き た ん う た ぷ 笑 笑 笑 あ く\n" + "う 笑 し ん し あ に き し ん し あ\n" + "う き た き た ん う た ぷ 笑 笑 笑 あ く\n" + "た ん う し う き に き し ぷ く ん し ぷ\n" + "う く く 笑 に き し ん し あ\n" + "あ く た き ん 笑 し ん く 笑 に き き 笑 \n" + "う 笑 し ん し あ に き し ん し あ\n" + "あ く た き ん 笑 し ん く 笑 に き き 笑 \n" + "た ん う し う き に き し ぷ く ん う き\n" + "う く く 笑 に き し ん し あ\n" + "う う し ぷ あ 笑 笑 笑 \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う う し ぷ あ 笑 笑 笑 \n" + "た ん う し う き に き し ぷ く ん く 笑\n" + "う く く 笑 に き し ん し あ\n" + "く 笑 く ん し き し ん く 笑 に く し ぷ し き に き う し \n" + "う 笑 し ん し あ に き し ん し あ\n" + "く 笑 く ん し き し ん く 笑 に く し ぷ し き に き う し \n" + "た ん う し う き に き し ぷ く ん う 笑\n" + "う く く 笑 に き し ん し あ\n" + "ん 笑 う し ぷ に し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "ん 笑 う し ぷ に し ん \n" + "た ん う し う き に き し ぷ く ん に き\n" + "う く く 笑 に き し ん し あ\n" + "う き う た \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う き う た \n" + "た ん う し う き に き し ぷ く ん ぷ 笑\n" + "う く く 笑 に き し ん し あ\n" + "う し う う た ぷ ぷ に し き あ 笑 く ん し き し あ \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う し う う た ぷ ぷ に し き あ 笑 く ん し き し あ \n" + "た ん う し う き に き し ぷ く ん た き\n" + "う く く 笑 に き し ん し あ\n" + "う た く ん う し \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う た く ん う し \n" + "た ん う し う き に き し ぷ く ん た ん\n" + "う く く 笑 に き し ん し あ\n" + "笑 笑 \n" + "う 笑 し ん し あ に き し ん し あ\n" + "笑 笑 \n" + "た ん う し う き に き し ぷ く ん し あ\n" + "う く く 笑 に き し ん し あ\n" + "ぷ に し き た ぷ う う し き た ぷ \n" + "う 笑 し ん し あ に き し ん し あ\n" + "ぷ に し き た ぷ う う し き た ぷ \n" + "た ん う し う き に き し ぷ く ん し ん\n" + "う く く 笑 に き し ん し あ\n" + "し あ し ぷ し ん く ん う 笑 う あ く ん あ く く 笑\n" + "う 笑 し ん し あ に き し ん し あ\n" + "し あ し ぷ し ん く ん う 笑 う あ く ん あ く く 笑\n" + "た ん う し う き に き し ぷ く ん う う\n" + "う く く 笑 に き し ん し あ\n" + "し あ し ん し き ん 笑 う う し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "し あ し ん し き ん 笑 う う し ん \n" + "た ん う し う き に き し ぷ く ん う た\n" + "う く く 笑 に き し ん し あ\n" + "う き ぷ に う あ し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う き ぷ に う あ し ん \n" + "た ん う し う き に き し ぷ く ん き 笑\n" + "う く く 笑 に き し ん し あ\n" + "た ぷ く 笑 あ 笑 た ぷ き 笑 う き た ぷ し ん う し う ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "た ぷ く 笑 あ 笑 た ぷ き 笑 う き た ぷ し ん う し う ん \n" + "た ん う し う き に き し ぷ く ん に く\n" + "う く く 笑 に き し ん し あ\n" + "に く し あ た ぷ う く \n" + "う 笑 し ん し あ に き し ん し あ\n" + "に く し あ た ぷ う く \n" + "た ん う し う き に き し ぷ く ん 笑 笑\n" + "う く く 笑 に き し ん し あ\n" + "ぷ 笑 し あ た ぷ た き う く \n" + "う 笑 し ん し あ に き し ん し あ\n" + "ぷ 笑 し あ た ぷ た き う く \n" + "\n" + ""; D = D.replace("\n", " \n"); D = D.replace("\"", " \""); a.validate(); // tr(a.decode(D, true)); out.println(a.encode(in.next(), true)); } static class Analyzer { String[] table; int K; public Analyzer() { table = new String[128]; } public void add(String enc, String dec) { int le = enc.length(); int ld = dec.length(); assert le % ld == 0; int lK = le / ld; if(K == 0)K = lK; if(K != lK)throw new IllegalStateException(); for(int i = 0;i < dec.length();i++) { char c = dec.charAt(i); if(c == '*')continue; int code = c; String can = enc.substring(i*K, i*K+K); if(table[code] == null) { table[code] = can; }else if(!table[code].equals(can)) { throw new IllegalStateException(); } } } public void validate() { for(int i = 0;i < 128;i++) { if(table[i] == null)continue; for(int j = i+1;j < 128;j++) { if(table[j] != null && table[i].equals(table[j])) { throw new RuntimeException(i + " " + j + " " + table[j]); } } } } public String encode(String s, boolean strict) { StringBuilder sb = new StringBuilder(); for(int i = 0;i < s.length();i++) { char c = s.charAt(i); if(table[(int)c] == null) { if(strict) { throw new RuntimeException("" + i); }else { sb.append("?"); } }else { sb.append(table[(int)c]); } } return sb.toString(); } public String decode(String enc, boolean raw) { StringBuilder sb = new StringBuilder(); outer: for(int i = 0;i < enc.length();) { if(i+K <= enc.length()) { String t = enc.substring(i, i+K); for(int j = 0;j < table.length;j++) { if(table[j] != null && table[j].equals(t)) { sb.append((char)j); i+=K; continue outer; } } } if(raw) { sb.append(enc.charAt(i)); i++; }else { sb.append("?"); i+=K; } } return sb.toString(); } } 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)); } }