結果
問題 | No.3064 う し た ぷ に き あ く ん 笑 |
ユーザー |
|
提出日時 | 2020-04-02 16:50:51 |
言語 | Java21 (openjdk 21) |
結果 |
AC
|
実行時間 | 259 ms / 2,000 ms |
コード長 | 17,810 bytes |
コンパイル時間 | 4,433 ms |
コンパイル使用メモリ | 82,284 KB |
実行使用メモリ | 59,796 KB |
最終ジャッジ日時 | 2023-09-11 00:30:43 |
合計ジャッジ時間 | 14,780 ms |
ジャッジサーバーID (参考情報) |
judge15 / judge14 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 122 ms
55,840 KB |
testcase_01 | AC | 120 ms
55,744 KB |
testcase_02 | AC | 121 ms
56,284 KB |
testcase_03 | AC | 119 ms
55,744 KB |
testcase_04 | AC | 119 ms
55,436 KB |
testcase_05 | AC | 120 ms
55,732 KB |
testcase_06 | AC | 121 ms
55,828 KB |
testcase_07 | AC | 120 ms
55,740 KB |
testcase_08 | AC | 122 ms
55,788 KB |
testcase_09 | AC | 121 ms
55,640 KB |
testcase_10 | AC | 119 ms
55,836 KB |
testcase_11 | AC | 119 ms
55,916 KB |
testcase_12 | AC | 120 ms
55,700 KB |
testcase_13 | AC | 121 ms
55,692 KB |
testcase_14 | AC | 120 ms
55,476 KB |
testcase_15 | AC | 118 ms
55,684 KB |
testcase_16 | AC | 119 ms
55,832 KB |
testcase_17 | AC | 118 ms
55,888 KB |
testcase_18 | AC | 117 ms
55,740 KB |
testcase_19 | AC | 119 ms
55,484 KB |
testcase_20 | AC | 120 ms
55,948 KB |
testcase_21 | AC | 121 ms
56,300 KB |
testcase_22 | AC | 123 ms
55,836 KB |
testcase_23 | AC | 119 ms
55,844 KB |
testcase_24 | AC | 120 ms
55,720 KB |
testcase_25 | AC | 118 ms
56,012 KB |
testcase_26 | AC | 190 ms
56,328 KB |
testcase_27 | AC | 151 ms
56,096 KB |
testcase_28 | AC | 256 ms
59,660 KB |
testcase_29 | AC | 259 ms
58,880 KB |
testcase_30 | AC | 255 ms
59,084 KB |
testcase_31 | AC | 236 ms
58,248 KB |
testcase_32 | AC | 246 ms
59,452 KB |
testcase_33 | AC | 149 ms
55,736 KB |
testcase_34 | AC | 251 ms
59,796 KB |
testcase_35 | AC | 222 ms
58,012 KB |
testcase_36 | AC | 223 ms
58,408 KB |
testcase_37 | AC | 252 ms
59,284 KB |
testcase_38 | AC | 236 ms
59,036 KB |
testcase_39 | AC | 154 ms
55,708 KB |
testcase_40 | AC | 192 ms
56,204 KB |
testcase_41 | AC | 231 ms
58,656 KB |
testcase_42 | AC | 127 ms
55,760 KB |
testcase_43 | AC | 154 ms
55,840 KB |
testcase_44 | AC | 238 ms
58,776 KB |
testcase_45 | AC | 190 ms
55,844 KB |
testcase_46 | AC | 121 ms
55,956 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)); } }