Submission #2415996


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a) for(int i=0;i<(a);i++)
const ll MOD=1000000007;

int basyo[26],dp[1<<25];
vector<int> V;

void solve(int mask,int r){
  int y=r/5,x=r%5;
  if((mask&(1<<r))==0){
    // 置けるとき
    //              上と下のxor
    if(y>0 && y<4 && ((mask>>(r-5))^(mask>>(r+5)))&1) return;
    //                       右と左のxor
    if(x>0 && x<4 && ((mask>>(r-1))^(mask>>(r+1)))&1) return;
    (dp[mask^(1<<r)]+=dp[mask])%=MOD;
  }
}

int main(){
  fill(basyo,basyo+26,-1);
  rep(i,25){
    int a;cin>>a;
    if(a==0) V.push_back(i);
    else basyo[a]=i;
  }
  dp[0]=1;
  rep(mask,(1<<25)-1) if(dp[mask]){
    int b=__builtin_popcount(mask)+1;
    if(basyo[b]>=0){
      // 場所が固定
      solve(mask,basyo[b]);
    }else{
      rep(j,V.size()) solve(mask,V[j]);
    }
  }
  cout<<dp[(1<<25)-1]<<endl;
  return 0;
}

Submission Info

Submission Time
Task D - 25個の整数
User misosoup
Language C++14 (GCC 5.4.1)
Score 100
Code Size 969 Byte
Status AC
Exec Time 117 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 37 ms 12544 KB
test-1-02.txt AC 37 ms 14592 KB
test-1-03.txt AC 38 ms 16640 KB
test-1-04.txt AC 48 ms 69888 KB
test-1-05.txt AC 38 ms 16640 KB
test-1-06.txt AC 38 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 37 ms 12544 KB
test-1-12.txt AC 38 ms 18688 KB
test-1-13.txt AC 37 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 92 ms 68224 KB
test-2-07.txt AC 81 ms 92416 KB
test-2-08.txt AC 99 ms 113280 KB
test-2-09.txt AC 84 ms 74624 KB
test-2-10.txt AC 117 ms 78336 KB