Submission #1612078


Source Code Expand

/*
#include <bits/stdc++.h>
//*/
//*
#include <iostream>
#include <vector>
#include <string.h>
#include <stack>
#include <queue>
#include <algorithm>
#include <climits>
//*/
#define REP(i,n) for(ll i=0;i<(n);i++)
#define MOD 1000000007
#define int long long
#ifdef int
    const long long INF = LLONG_MAX / 10;
#else
    const int INF = 1010101010;
#endif
using namespace std;
typedef long long ll;
typedef vector<vector<ll>> mat;
typedef pair<int, int> P;
//typedef pair<double, double> P;

int A[25];
int fix[26];    //既に指定されている数字の場所fix[5]:5が入っている場所インデックス
int dp[1<<25];
vector<int> V;

signed main()
{
    REP(i,26) fix[i] = -1;
    REP(i,25) {
        cin >> A[i];
        if (A[i] == 0) V.push_back(i);
        else fix[A[i]] = i;
    }

    dp[0] = 1;
    //配るDP
    for (int mask=0; mask<(1<<25)-1; mask++) if (dp[mask]) {
        int b = __builtin_popcount(mask) + 1;   //次に置く数字
        if (fix[b] >= 0) {
            //次に置く数字bの場所が指定されていた場合
            int r = fix[b];
            int y = r / 5;
            int x = r % 5;
            if ((mask & (1 << r)) == 0) {
                //これから置く場合
                if (y > 0 && y < 4 && ((mask >> (r - 5)) ^ (mask >> (r + 5))) & 1) continue;
                if (x > 0 && x < 4 && ((mask >> (r - 1)) ^ (mask >> (r + 1))) & 1) continue;
                dp[mask ^ (1 << r)] += dp[mask];
                if (dp[mask ^ (1 << r)] >= MOD) dp[mask ^ (1 << r)] -= MOD;
            }
        } else {
            for (int r : V) {
                int y = r / 5;
                int x = r % 5;
                if ((mask & (1 << r)) == 0) {
                    if (y > 0 && y < 4 && ((mask >> (r - 5)) ^ (mask >> (r + 5))) & 1) continue;
                    if (x > 0 && x < 4 && ((mask >> (r - 1)) ^ (mask >> (r + 1))) & 1) continue;
                    dp[mask ^ (1 << r)] += dp[mask];
                    if (dp[mask ^ (1 << r)] >= MOD) dp[mask ^ (1 << r)] -= MOD;
                }
            }
        }
    }

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

Submission Info

Submission Time
Task D - 25個の整数
User hiyokko3
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2191 Byte
Status AC
Exec Time 139 ms
Memory 160512 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 28 ms 14592 KB
sample-02.txt AC 36 ms 37120 KB
sample-03.txt AC 24 ms 256 KB
sample-04.txt AC 28 ms 14592 KB
test-1-01.txt AC 31 ms 20736 KB
test-1-02.txt AC 29 ms 18688 KB
test-1-03.txt AC 30 ms 20736 KB
test-1-04.txt AC 47 ms 71936 KB
test-1-05.txt AC 29 ms 18688 KB
test-1-06.txt AC 30 ms 18688 KB
test-1-07.txt AC 24 ms 2304 KB
test-1-08.txt AC 42 ms 51456 KB
test-1-09.txt AC 28 ms 14592 KB
test-1-10.txt AC 28 ms 14592 KB
test-1-11.txt AC 28 ms 14592 KB
test-1-12.txt AC 31 ms 22784 KB
test-1-13.txt AC 28 ms 14592 KB
test-1-14.txt AC 30 ms 20736 KB
test-1-15.txt AC 32 ms 26880 KB
test-2-01.txt AC 36 ms 35072 KB
test-2-02.txt AC 37 ms 41472 KB
test-2-03.txt AC 41 ms 51456 KB
test-2-04.txt AC 76 ms 145920 KB
test-2-05.txt AC 80 ms 140032 KB
test-2-06.txt AC 114 ms 137856 KB
test-2-07.txt AC 104 ms 151808 KB
test-2-08.txt AC 121 ms 160512 KB
test-2-09.txt AC 105 ms 135936 KB
test-2-10.txt AC 139 ms 150016 KB