Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<string>#include<string.h>#include<bitset>using namespace std;const int bit=((1<<12)-1);int sum[1024][8][bit+2];#define mod 1000000007int N,M;bool freep(int s, int o) {return !(s & (1 << o));}int mark(int s, int o) {return s |= (1 << o);}int mark(int s, int o1, int o2) {return mark(s, o1) | mark(s, o2);}void get_sum(){int bit1=(1<<(2*M))-1;int sj,sj1,sjm;for (int i = 1; i <= N; i++) {for (int s = 0; s < (1 << (2 * M + 1)); s++)sum[i][M + 1][s] = 1;}for (int j = 1; j <= M; j++) {