Submission #4636094


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

const int MOD = 1e9 + 7;

array<int, 1 << 25> dp;

void f(int mask, int pos) {
    if ((mask >> pos) & 1) return;
    int x = pos % 5;
    int y = pos / 5;
    if (x > 0 && x < 4 && ((mask >> (pos - 1)) ^ (mask >> (pos + 1))) & 1) {
        return;
    }
    if (y > 0 && y < 4 && ((mask >> (pos - 5)) ^ (mask >> (pos + 5))) & 1) {
        return;
    }
    dp[mask + (1 << pos)] += dp[mask];
    dp[mask + (1 << pos)] %= MOD;
}

int main() {
    vector<int> not_arranged;
    map<int, int> arranged;
    for (size_t i = 0; i < 25; i++) {
        int x;
        cin >> x;
        if (x) {
            arranged[x] = i;
        } else {
            not_arranged.push_back(i);
        }
    }

    dp[0] = 1;
    for (size_t mask = 0; mask < (1 << 25) - 1; mask++) {
        if (!dp[mask]) continue;
        int n = __builtin_popcount(mask) + 1;
        if (arranged.find(n) != end(arranged)) {
            f(mask, arranged[n]);
        } else {
            for (auto&& x : not_arranged) f(mask, x);
        }
    }

    cout << dp[(1 << 25) - 1] << endl;
}

Submission Info

Submission Time
Task D - 25個の整数
User hrbt
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1102 Byte
Status AC
Exec Time 113 ms
Memory 113280 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 4
AC × 19
AC × 29
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 37 ms 12544 KB
sample-02.txt AC 38 ms 20736 KB
sample-03.txt AC 34 ms 256 KB
sample-04.txt AC 37 ms 12544 KB
test-1-01.txt AC 36 ms 12544 KB
test-1-02.txt AC 37 ms 14592 KB
test-1-03.txt AC 37 ms 16640 KB
test-1-04.txt AC 48 ms 69888 KB
test-1-05.txt AC 37 ms 16640 KB
test-1-06.txt AC 37 ms 16640 KB
test-1-07.txt AC 35 ms 2304 KB
test-1-08.txt AC 42 ms 39168 KB
test-1-09.txt AC 37 ms 12544 KB
test-1-10.txt AC 37 ms 12544 KB
test-1-11.txt AC 36 ms 12544 KB
test-1-12.txt AC 38 ms 18688 KB
test-1-13.txt AC 36 ms 12544 KB
test-1-14.txt AC 38 ms 18688 KB
test-1-15.txt AC 39 ms 24832 KB
test-2-01.txt AC 41 ms 33024 KB
test-2-02.txt AC 40 ms 24960 KB
test-2-03.txt AC 40 ms 30976 KB
test-2-04.txt AC 58 ms 113152 KB
test-2-05.txt AC 52 ms 70272 KB
test-2-06.txt AC 90 ms 68224 KB
test-2-07.txt AC 79 ms 92416 KB
test-2-08.txt AC 97 ms 113280 KB
test-2-09.txt AC 82 ms 74624 KB
test-2-10.txt AC 113 ms 78336 KB