提出 #1693997
ソースコード 拡げる
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
class Simple {
int K, N;
string[] v, w;
void Solve() {
//input
K = io.Int;
N = io.Int;
v = new string[N];
w = new string[N];
for (int i = 0; i < N;++i){
v[i] = io.String;
w[i] = io.String;
}
//1~3のK文字の長さを列挙
var res = gRangedArr(K, 1, 3);
//各文字の長さを決定
foreach (var list in res) {
//検証
var f = true;
for (int i = 0; i < N;++i){
var len = 0;
foreach(var c in v[i])
len += list[int.Parse(c.ToString()) - 1];
if (len != w[i].Length) {
f = false;
break;
}
}
//文字の長さの条件を満たすものが見つかった
if (f){
var ans = new string[K];
for (int i = 0; i < N; ++i) {
var ind = 0;
foreach (var c in v[i]){
var c2i = int.Parse(c.ToString()) - 1;
var len = list[c2i];
if(ans[c2i]==null||ans[c2i]==""||ans[c2i]==w[i].Substring(ind, len)){
ans[c2i] = w[i].Substring(ind, len);
ind += len;
}else{
//文字が合わないことが判明
goto OUT;
}
}
}
//ret
foreach (var val in ans) {
Console.WriteLine(val);
}
return;
}
OUT:;
}
}
List<int[]> gRangedArr(int content, int rangeStart, int rangeEnd) {
var result = new List<int[]>();
_gRangedArr(content-1, new int[content], result, rangeStart, rangeEnd);
return result;
}
void _gRangedArr(int n, int[] Arr, List<int[]> result, int rs, int re) {
if (n < 0) { result.Add(Arr); return; }
for (int i = rs; i <= re; ++i) {
var newArr = Arr.ToArray();
newArr[n] = i;
_gRangedArr(n - 1, newArr, result, rs, re);
}
}
SimpleIO io = new SimpleIO();
public static void Main(string[] args) { new Simple().Stream(); }
void Stream() {Solve();io.writeFlush();}
}
class SimpleIO {
string[] nextBuffer;
int BufferCnt;
char[] cs = new char[] { ' ' };
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
public SimpleIO() {
nextBuffer = new string[0];
BufferCnt = 0;
Console.SetOut(sw);
}
public string Next() {
if (BufferCnt < nextBuffer.Length)
return nextBuffer[BufferCnt++];
string st = Console.ReadLine();
while (st == "")
st = Console.ReadLine();
nextBuffer = st.Split(cs, StringSplitOptions.RemoveEmptyEntries);
BufferCnt = 0;
return nextBuffer[BufferCnt++];
}
public string String => Next();
public char Char => char.Parse(String);
public int Int => int.Parse(String);
public long Long => long.Parse(String);
public double Double => double.Parse(String);
public void writeFlush() { Console.Out.Flush(); }
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - 語呂合わせ |
| ユーザ | rui0422 |
| 言語 | C# (Mono 4.6.2.0) |
| 得点 | 100 |
| コード長 | 3769 Byte |
| 結果 | AC |
| 実行時間 | 64 ms |
| メモリ | 19296 KiB |
ジャッジ結果
| セット名 | Sample | Subtask1 | Subtask2 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 40 / 40 | 60 / 60 | ||||||
| 結果 |
|
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt |
| Subtask1 | sample-02.txt, sample-03.txt, sample-04.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt |
| Subtask2 | sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask2-16.txt, subtask2-17.txt, subtask2-18.txt, subtask2-19.txt, subtask2-20.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| sample-01.txt | AC | 33 ms | 11712 KiB |
| sample-02.txt | AC | 24 ms | 11348 KiB |
| sample-03.txt | AC | 25 ms | 11348 KiB |
| sample-04.txt | AC | 24 ms | 9300 KiB |
| subtask1-01.txt | AC | 25 ms | 11348 KiB |
| subtask1-02.txt | AC | 25 ms | 11348 KiB |
| subtask1-03.txt | AC | 25 ms | 13396 KiB |
| subtask1-04.txt | AC | 24 ms | 11348 KiB |
| subtask1-05.txt | AC | 24 ms | 9300 KiB |
| subtask1-06.txt | AC | 25 ms | 11348 KiB |
| subtask1-07.txt | AC | 25 ms | 11348 KiB |
| subtask1-08.txt | AC | 24 ms | 11348 KiB |
| subtask1-09.txt | AC | 25 ms | 13396 KiB |
| subtask1-10.txt | AC | 24 ms | 11348 KiB |
| subtask1-11.txt | AC | 25 ms | 11348 KiB |
| subtask1-12.txt | AC | 24 ms | 9300 KiB |
| subtask1-13.txt | AC | 24 ms | 9300 KiB |
| subtask1-14.txt | AC | 24 ms | 11348 KiB |
| subtask1-15.txt | AC | 24 ms | 9300 KiB |
| subtask1-16.txt | AC | 25 ms | 11348 KiB |
| subtask1-17.txt | AC | 24 ms | 9300 KiB |
| subtask1-18.txt | AC | 25 ms | 11348 KiB |
| subtask1-19.txt | AC | 24 ms | 9300 KiB |
| subtask1-20.txt | AC | 24 ms | 11348 KiB |
| subtask2-01.txt | AC | 35 ms | 13664 KiB |
| subtask2-02.txt | AC | 32 ms | 13664 KiB |
| subtask2-03.txt | AC | 41 ms | 13664 KiB |
| subtask2-04.txt | AC | 49 ms | 17248 KiB |
| subtask2-05.txt | AC | 46 ms | 19296 KiB |
| subtask2-06.txt | AC | 39 ms | 15712 KiB |
| subtask2-07.txt | AC | 61 ms | 17248 KiB |
| subtask2-08.txt | AC | 30 ms | 13664 KiB |
| subtask2-09.txt | AC | 63 ms | 19296 KiB |
| subtask2-10.txt | AC | 63 ms | 15200 KiB |
| subtask2-11.txt | AC | 64 ms | 19296 KiB |
| subtask2-12.txt | AC | 42 ms | 13664 KiB |
| subtask2-13.txt | AC | 47 ms | 15200 KiB |
| subtask2-14.txt | AC | 40 ms | 13664 KiB |
| subtask2-15.txt | AC | 39 ms | 13664 KiB |
| subtask2-16.txt | AC | 32 ms | 13664 KiB |
| subtask2-17.txt | AC | 28 ms | 13664 KiB |
| subtask2-18.txt | AC | 63 ms | 17248 KiB |
| subtask2-19.txt | AC | 64 ms | 19296 KiB |
| subtask2-20.txt | AC | 63 ms | 17248 KiB |