結果

問題 No.3064 う し た ぷ に き あ く ん 笑
ユーザー uwiuwi
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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)); }
}
0