Submission #2075081


Source Code Expand

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const ll mod = (ll)1e9 + 7;
vector<int> none;
int a[25], pos[25];
ll dp[1 << 25];

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

int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(false);
  
  fill(pos, pos + 25, -1);
  for (int i = 0; i < 25; i++) {
    cin >> a[i];
    a[i]--;
    if (a[i] < 0) none.push_back(i);
    else pos[a[i]] = i;
  }

  dp[0] = 1;
  for (int i = 0; i < 1 << 25; i++) {
    if (!dp[i]) continue;
    int bit = __builtin_popcount(i);
    if (pos[bit] >= 0) {
      f(i, pos[bit]);
    } else {
      for (auto& j : none) {
        f(i, j);
      }
    }
  }
  cout << dp[(1 << 25) - 1] << endl;

  return 0;
}

Submission Info

Submission Time
Task D - 25個の整数
User legosuke
Language C++14 (GCC 5.4.1)
Score 100
Code Size 970 Byte
Status AC
Exec Time 121 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 26 ms 14592 KB
sample-02.txt AC 32 ms 37120 KB
sample-03.txt AC 24 ms 256 KB
sample-04.txt AC 26 ms 14592 KB
test-1-01.txt AC 28 ms 20736 KB
test-1-02.txt AC 27 ms 18688 KB
test-1-03.txt AC 28 ms 20736 KB
test-1-04.txt AC 38 ms 71936 KB
test-1-05.txt AC 27 ms 18688 KB
test-1-06.txt AC 27 ms 18688 KB
test-1-07.txt AC 24 ms 2304 KB
test-1-08.txt AC 34 ms 51456 KB
test-1-09.txt AC 26 ms 14592 KB
test-1-10.txt AC 26 ms 14592 KB
test-1-11.txt AC 27 ms 14592 KB
test-1-12.txt AC 28 ms 22784 KB
test-1-13.txt AC 27 ms 14592 KB
test-1-14.txt AC 28 ms 20736 KB
test-1-15.txt AC 29 ms 26880 KB
test-2-01.txt AC 31 ms 35072 KB
test-2-02.txt AC 32 ms 41472 KB
test-2-03.txt AC 35 ms 51456 KB
test-2-04.txt AC 56 ms 145920 KB
test-2-05.txt AC 59 ms 140032 KB
test-2-06.txt AC 97 ms 137856 KB
test-2-07.txt AC 83 ms 151808 KB
test-2-08.txt AC 100 ms 160512 KB
test-2-09.txt AC 87 ms 135936 KB
test-2-10.txt AC 121 ms 150016 KB