Submission #1679854


Source Code Expand

#define FOR(i,j,n) for (int i=(j);i<(n);i++)
#define REP(i,n) for (int i=0;i<(n);i++)
#define I(n) scanf("%d", &(n))
#include <bits/stdc++.h>
using namespace std;
int table[26],dp[1<<25],tmp,x,y,bits;

int main(){
    REP(i,25){ I(tmp); table[tmp] = i;}

    dp[0] = 1;
    REP(i,1<<25){
        if (!dp[i]) continue;
        bits = 1;
        tmp = i;
        while(tmp) { tmp &= tmp-1; bits++;}
        REP(distr,25){
            if (table[bits] != 0 && table[bits] != distr) continue;
            if ((1<<distr) & i) continue;
            x = distr % 5;
            y = distr / 5;
            if ((x == 0 || x == 4 || !((((1<<(distr-1)) & i)!=0) ^ (((1<<(distr+1)) & i)!=0))) &&
                (y == 0 || y == 4 || !((((1<<(distr-5)) & i)!=0) ^ (((1<<(distr+5)) & i)!=0)))){
                dp[i | (1<<distr)] += dp[i];
                dp[i | (1<<distr)] %= 1000000007;
            }
        }
    }
    printf("%d\n",dp[(1<<25)-1]);

Submission Info

Submission Time
Task D - 25個の整数
User omi
Language C++14 (GCC 5.4.1)
Score 0
Code Size 965 Byte
Status CE

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:29:33: error: expected ‘}’ at end of input
     printf("%d\n",dp[(1<<25)-1]);
                                 ^
./Main.cpp:9:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     REP(i,25){ I(tmp); table[tmp] = i;}
                      ^