Submission #433928


Source Code Expand

#include <iostream>
#include <cstdio>
#include <cassert>
#include <cstring>
#include <vector>
#include <valarray>
#include <array>
#include <queue>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <algorithm>
#include <cmath>
#include <complex>
#include <random>

using namespace std;
typedef long long ll;
typedef unsigned long long ull;


int d[5][5];
bool used[5][5];
int xp[25], yp[25];

int dfs(int p) {
    if (p == 25) {
        return 1;
    }
    if (xp[p] != -1) {
        int i = yp[p], j = xp[p];
        if (1 <= i && i <= 3) {
            if (used[i-1][j] && !used[i+1][j]) {
                return 0;
            }
            if (!used[i-1][j] && used[i+1][j]) {
                return 0;
            }
        }
        if (1 <= j && j <= 3) {
            if (used[i][j-1] && !used[i][j+1]) {
                return 0;
            }
            if (!used[i][j-1] && used[i][j+1]) {
                return 0;
            }
        }
        used[i][j] = true;
        int sm = dfs(p+1);
        used[i][j] = false;
        return sm;
    }
    int sm = 0;
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            if (d[i][j] >= 0) continue;
            if (1 <= i && i <= 3) {
                if (used[i-1][j] && !used[i+1][j]) {
                    continue;
                }
                if (!used[i-1][j] && used[i+1][j]) {
                    continue;
                }
            }
            if (1 <= j && j <= 3) {
                if (used[i][j-1] && !used[i][j+1]) {
                    continue;
                }
                if (!used[i][j-1] && used[i][j+1]) {
                    continue;
                }
            }
            d[i][j] = p;
            used[i][j] = true;
            sm += dfs(p+1);
            d[i][j] = -1;
            used[i][j] = false;
        }
    }
    return sm;
}

int main() {
    memset(xp, -1, sizeof(xp));
    memset(yp, -1, sizeof(yp));
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            cin >> d[i][j]; d[i][j]--;
            if (d[i][j] != -1) {
                xp[d[i][j]] = j;
                yp[d[i][j]] = i;
            }
        }
    }
    cout << dfs(0) << endl;
    return 0;
}

Submission Info

Submission Time
Task D - 25個の整数
User yosupo
Language C++11 (GCC 4.9.2)
Score 30
Code Size 2361 Byte
Status TLE
Exec Time 5036 ms
Memory 928 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 0 / 70
Status
AC × 4
AC × 19
AC × 21
TLE × 8
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt
Subtask1 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, test-1-01.txt, test-1-02.txt, test-1-03.txt, test-1-04.txt, test-1-05.txt, test-1-06.txt, test-1-07.txt, test-1-08.txt, test-1-09.txt, test-1-10.txt, test-1-11.txt, test-1-12.txt, test-1-13.txt, test-1-14.txt, test-1-15.txt
Subtask2 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, test-1-01.txt, test-1-02.txt, test-1-03.txt, test-1-04.txt, test-1-05.txt, test-1-06.txt, test-1-07.txt, test-1-08.txt, test-1-09.txt, test-1-10.txt, test-1-11.txt, test-1-12.txt, test-1-13.txt, test-1-14.txt, test-1-15.txt, test-2-01.txt, test-2-02.txt, test-2-03.txt, test-2-04.txt, test-2-05.txt, test-2-06.txt, test-2-07.txt, test-2-08.txt, test-2-09.txt, test-2-10.txt
Case Name Status Exec Time Memory
sample-01.txt AC 25 ms 924 KB
sample-02.txt AC 39 ms 672 KB
sample-03.txt AC 24 ms 800 KB
sample-04.txt AC 24 ms 804 KB
test-1-01.txt AC 22 ms 752 KB
test-1-02.txt AC 22 ms 796 KB
test-1-03.txt AC 25 ms 924 KB
test-1-04.txt AC 26 ms 796 KB
test-1-05.txt AC 23 ms 676 KB
test-1-06.txt AC 26 ms 804 KB
test-1-07.txt AC 25 ms 728 KB
test-1-08.txt AC 26 ms 804 KB
test-1-09.txt AC 26 ms 796 KB
test-1-10.txt AC 25 ms 924 KB
test-1-11.txt AC 24 ms 928 KB
test-1-12.txt AC 25 ms 800 KB
test-1-13.txt AC 25 ms 672 KB
test-1-14.txt AC 25 ms 924 KB
test-1-15.txt AC 23 ms 792 KB
test-2-01.txt TLE 5034 ms 800 KB
test-2-02.txt AC 978 ms 800 KB
test-2-03.txt AC 177 ms 800 KB
test-2-04.txt TLE 5032 ms 924 KB
test-2-05.txt TLE 5033 ms 804 KB
test-2-06.txt TLE 5032 ms 804 KB
test-2-07.txt TLE 5032 ms 864 KB
test-2-08.txt TLE 5036 ms 920 KB
test-2-09.txt TLE 5034 ms 920 KB
test-2-10.txt TLE 5036 ms 924 KB