Submission #46117850


Source Code Expand

#include <iostream>
#include <cstdlib>
#include <map>

using namespace std;

char a[5][5][5];
bool b[5][5][5];
int cnt, t[5][2][5], p[5][2], d[5];

bool check() {
    int s[15][15]{}, sum = 0, _s[2][15]{}, t0 = 0, t1 = 0;
    const int del = 3;

    auto add = [&](int i) {
        if (d[i] == 0) {
            for (int j = 1; j <= 4; j++)
                for (int k = 1; k <= 4; k++)
                    s[j + p[i][0] + del][k + p[i][1] + del] += b[i][j][k];
        } else if (d[i] == 1) {
            for (int j = 1; j <= 4; j++)
                for (int k = 1; k <= 4; k++)
                    s[j + p[i][0] + del][k + p[i][1] + del] += b[i][k][5 - j];
        } else if (d[i] == 2) {
            for (int j = 1; j <= 4; j++)
                for (int k = 1; k <= 4; k++)
                    s[j + p[i][0] + del][k + p[i][1] + del] += b[i][5 - j][5 - k];
        } else {
            for (int j = 1; j <= 4; j++)
                for (int k = 1; k <= 4; k++)
                    s[j + p[i][0] + del][k + p[i][1] + del] += b[i][5 - k][j];
        }
    };

    for (int i = 1; i <= 3; i++) add(i);
    for (int i = 0; i < 15; i++)
        for (int j = 0; j < 15; j++) {
            _s[0][i] += s[i][j] == 1;
            _s[1][j] += s[i][j] == 1;
            sum += s[i][j] == 1;
        }
    for (int i = 0 ; i< 15; i++) {
        t0 += _s[0][i] == 4;
        t1 += _s[1][i] == 4;
    }
    return t0 == 4 && t1 == 4;
}

void dfs(int i) {
    if (i == 4) {
        if (check()) {
            cout << "Yes" << endl;
            exit(0);
        }
        return;
    }
    for (p[i][0] = -3; p[i][0] <= 3; p[i][0]++)
        for (p[i][1] = -3; p[i][1] <= 3; p[i][1]++)
            for (d[i] = 0; d[i] < 4; d[i]++)
                dfs(i + 1);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    for (int i = 1; i <= 3; i++)
        for (int j = 1; j <= 4; j++)
            for (int k = 1; k <= 4; k++) {
                cin >> a[i][j][k];
                b[i][j][k] = (a[i][j][k] == '#');
                if (b[i][j][k]) {
                    cnt++;
                    t[i][0][j]++;
                    t[i][1][k]++;
                }
            }

    if (cnt == 16)
        dfs(2);

    cout << "No" << endl;
}

Submission Info

Submission Time
Task D - Polyomino
User x_x_
Language C++ 20 (gcc 12.2)
Score 400
Code Size 2346 Byte
Status AC
Exec Time 9 ms
Memory 3584 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 6
AC × 42
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 02_corner_00.txt, 02_corner_01.txt, 02_corner_02.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 7 ms 3584 KiB
00_sample_01.txt AC 4 ms 3584 KiB
00_sample_02.txt AC 9 ms 3444 KiB
00_sample_03.txt AC 1 ms 3412 KiB
00_sample_04.txt AC 1 ms 3444 KiB
00_sample_05.txt AC 6 ms 3388 KiB
01_random_00.txt AC 1 ms 3464 KiB
01_random_01.txt AC 6 ms 3452 KiB
01_random_02.txt AC 1 ms 3512 KiB
01_random_03.txt AC 4 ms 3448 KiB
01_random_04.txt AC 1 ms 3456 KiB
01_random_05.txt AC 5 ms 3416 KiB
01_random_06.txt AC 1 ms 3312 KiB
01_random_07.txt AC 5 ms 3392 KiB
01_random_08.txt AC 1 ms 3580 KiB
01_random_09.txt AC 3 ms 3404 KiB
01_random_10.txt AC 1 ms 3456 KiB
01_random_11.txt AC 3 ms 3312 KiB
01_random_12.txt AC 1 ms 3416 KiB
01_random_13.txt AC 5 ms 3512 KiB
01_random_14.txt AC 1 ms 3464 KiB
01_random_15.txt AC 5 ms 3408 KiB
01_random_16.txt AC 1 ms 3452 KiB
01_random_17.txt AC 1 ms 3392 KiB
01_random_18.txt AC 2 ms 3428 KiB
01_random_19.txt AC 2 ms 3308 KiB
01_random_20.txt AC 4 ms 3428 KiB
01_random_21.txt AC 6 ms 3412 KiB
01_random_22.txt AC 4 ms 3396 KiB
01_random_23.txt AC 4 ms 3416 KiB
01_random_24.txt AC 9 ms 3432 KiB
01_random_25.txt AC 3 ms 3456 KiB
01_random_26.txt AC 1 ms 3512 KiB
01_random_27.txt AC 4 ms 3424 KiB
01_random_28.txt AC 3 ms 3312 KiB
01_random_29.txt AC 4 ms 3432 KiB
01_random_30.txt AC 9 ms 3584 KiB
01_random_31.txt AC 4 ms 3460 KiB
01_random_32.txt AC 9 ms 3448 KiB
02_corner_00.txt AC 5 ms 3420 KiB
02_corner_01.txt AC 4 ms 3516 KiB
02_corner_02.txt AC 7 ms 3440 KiB