Submission #42920730
Source Code Expand
import std;
void read(T...)(string S, ref T args) {
auto buf = S.split;
foreach (i, ref arg; args) {
arg = buf[i].to!(typeof(arg));
}
}
void main () {
int HA, WA; readln.read(HA, WA);
string[] A;
foreach (_; 0..HA) {
A ~= readln.chomp;
}
int HB, WB; readln.read(HB, WB);
string[] B;
foreach (_; 0..HB) {
B ~= readln.chomp;
}
int HX, WX; readln.read(HX, WX);
string[] X;
foreach (_; 0..HX) {
X ~= readln.chomp;
}
solve(A, B, X);
}
void solve (string[] A, string[] B, string[] X) {
A = cut(A);
B = cut(B);
X = cut(X);
char[][] base;
base.length = X.length;
foreach (ref x; base) {
x.length = X[0].length;
}
if (X.length < max(A.length, B.length) || X[0].length < max(A[0].length, B[0].length)) {
writeln("No");
return;
}
foreach (i; 0..base.length) {
foreach (j; 0..base[i].length) {
if (base.length < i+A.length || base[0].length < j+A[0].length) {
continue;
}
foreach (i2; 0..base.length) {
foreach (j2; 0..base[i].length) {
if (base.length < i2+B.length || base[0].length < j2+B[0].length) {
continue;
}
// reset
foreach (ref x; base) {
x[] = '.';
}
// Aを貼る
foreach (k; 0..A.length) {
foreach (l; 0..A[k].length) {
base[k+i][l+j] = A[k][l];
}
}
// Bを貼る
foreach (k; 0..B.length) {
foreach (l; 0..B[k].length) {
if (B[k][l] == '#') {
base[k+i2][l+j2] = B[k][l];
}
}
}
if (cut(cast(string[])base.dup) == X) {
writeln("Yes");
return;
}
}
}
}
}
writeln("No");
}
string[] cut (string[] S) {
// 上のカット
int up = 0;
foreach (i; 0..S.length) {
bool has_black = false;
foreach (j; 0..S[i].length) {
if (S[i][j] == '#') {
has_black = true;
break;
}
}
if (has_black) {
break;
}
up++;
}
S = S[up..$];
// 下のカット
int down = 0;
foreach_reverse (i; 0..S.length) {
bool has_black = false;
foreach (j; 0..S[i].length) {
if (S[i][j] == '#') {
has_black = true;
break;
}
}
if (has_black) {
break;
}
down++;
}
S = S[0..$-down];
// 右のカット
int right = 0;
foreach_reverse (i; 0..S[0].length) {
bool has_black = false;
foreach (j; 0..S.length) {
if (S[j][i] == '#') {
has_black = true;
break;
}
}
if (has_black) {
break;
}
right++;
}
foreach (i; 0..S.length) {
S[i] = S[i][0..$-right];
}
// 左のカット
int left = 0;
foreach (i; 0..S[0].length) {
bool has_black = false;
foreach (j; 0..S.length) {
if (S[j][i] == '#') {
has_black = true;
break;
}
}
if (has_black) {
break;
}
left++;
}
foreach (i; 0..S.length) {
S[i] = S[i][left..$];
}
return S;
}
Submission Info
| Submission Time | |
|---|---|
| Task | C - Ideal Sheet |
| User | InTheBloom |
| Language | D (DMD 2.091.0) |
| Score | 300 |
| Code Size | 3972 Byte |
| Status | AC |
| Exec Time | 17 ms |
| Memory | 4416 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 300 / 300 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example_00.txt, example_01.txt, example_02.txt, example_03.txt |
| All | example_00.txt, example_01.txt, example_02.txt, example_03.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, random2_00.txt, random2_01.txt, random2_02.txt, random2_03.txt, random2_04.txt, random2_05.txt, random2_06.txt, random2_07.txt, random2_08.txt, random2_09.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| example_00.txt | AC | 6 ms | 3504 KiB |
| example_01.txt | AC | 2 ms | 3492 KiB |
| example_02.txt | AC | 3 ms | 3516 KiB |
| example_03.txt | AC | 3 ms | 3504 KiB |
| hand_00.txt | AC | 5 ms | 3464 KiB |
| hand_01.txt | AC | 17 ms | 4388 KiB |
| hand_02.txt | AC | 10 ms | 4416 KiB |
| hand_03.txt | AC | 14 ms | 4284 KiB |
| hand_04.txt | AC | 2 ms | 3484 KiB |
| hand_05.txt | AC | 3 ms | 3480 KiB |
| hand_06.txt | AC | 2 ms | 3500 KiB |
| hand_07.txt | AC | 2 ms | 3492 KiB |
| random2_00.txt | AC | 3 ms | 3500 KiB |
| random2_01.txt | AC | 2 ms | 3492 KiB |
| random2_02.txt | AC | 2 ms | 3588 KiB |
| random2_03.txt | AC | 2 ms | 3548 KiB |
| random2_04.txt | AC | 3 ms | 3488 KiB |
| random2_05.txt | AC | 2 ms | 3420 KiB |
| random2_06.txt | AC | 2 ms | 3604 KiB |
| random2_07.txt | AC | 2 ms | 3596 KiB |
| random2_08.txt | AC | 2 ms | 3580 KiB |
| random2_09.txt | AC | 2 ms | 3452 KiB |
| random_00.txt | AC | 3 ms | 3500 KiB |
| random_01.txt | AC | 2 ms | 3532 KiB |
| random_02.txt | AC | 2 ms | 3492 KiB |
| random_03.txt | AC | 2 ms | 3484 KiB |
| random_04.txt | AC | 4 ms | 3588 KiB |
| random_05.txt | AC | 2 ms | 3484 KiB |
| random_06.txt | AC | 2 ms | 3392 KiB |
| random_07.txt | AC | 2 ms | 3452 KiB |
| random_08.txt | AC | 2 ms | 3540 KiB |
| random_09.txt | AC | 3 ms | 3520 KiB |