結果
| 問題 |
No.8064 う し た ぷ に き あ く ん 笑
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-04-02 16:50:51 |
| 言語 | Java (openjdk 23) |
| 結果 |
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 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 47 |
ソースコード
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)); }
}